Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Кодирование информации и системы счисления. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
91
для реализации этого метода умножения требуется n-разрядный сумматор, обеспечивающий суммирование только в пределах основной разрядной сетки.
Аналогично умножению, начиная с младшего разряда множителя, при умножении со старших разрядов можно заме­нить сдвиг вправо множителя на сдвиг влево промежуточного произведения.
Операция умножения в общем случае дает точный резуль­тат — 2n-разрядное произведение, где n разрядность операндов.
В ЭВМ при выполнении различных операций, в том числе и операции умножения, разрядность операндов и результатов одинаковая. Это означает, что при умножении правильных дро­бей последние (младшие) n разрядов отбрасываются, а старшие n разрядов округляются с учетом отбрасываемых младших.
Например, произведение 0,1011 · 0,1101 = 0,10001111 пред­ставляется в n-разрядном варианте как 0,1001. В этом случае операция умножения считается приближенной.
Возможные методы реализации операции умножения можно классифицировать по двум признакам:
1) начиная с какого разряда (со старшего или младшего)
выполняется отработка множителя;
2) что сдвигается — множимое или промежуточное про-
изведение.
Используя эти два классификационных признака, можно выделить четыре метода умножения:
умножение с младших разрядов множителя со сдвигом множимого;
умножение с младших разрядов множителя со сдвигом промежуточного произведения;
умножение со старшего разряда множителя со сдвигом множимого;
умножение со старшего разряда множителя со сдвигом промежуточного произведения.
92
5.3.2. Умножение в восьмеричной системе счисления
Рис. 5.11. Правила умножения в восьмеричной системе счисления
Пример. Перемножить числа 11510 и 5110 (1638 ∙ 638):
1 6 3
х
6 3
+ 5 3 1
1 2 6 2
1 3 3 5 1
Ответ: 115
10
5110 = 586510 = 1638 ∙ 638 = 133518.
Проверка: 133518 = 1 · 84 + 3 · 83 + 3 · 82 + 5 · 81 + 1 · 80 = = 586510.
5.4. ОПЕРАЦИЯ ДЕЛЕНИЯ
Деление в любой позиционной системе счисления произ­водится по тем же правилам, как и деление углом в десятичной системе. Деление в принципе является неточной операцией, по­этому при его выполнении прежде всего устанавливается коли­чество разрядов частного, которые подлежат определению.
93
5.4.1. Деление в двоичной системе счисления
Деление в двоичной системе счисления может выполнять­ся точно так же, как и в десятичной, однако формирование част­ного двоичных операндов реализуется гораздо проще, чем в де­сятичной системе, т. к.:
– упрощается процедура подбора очередной цифры вслед­ствие того, что в двоичной системе очередной цифрой может быть одна из двух — либо 0, либо 1;
– упрощается процедура умножения найденной цифры частного на делитель.
Пример 1. Разделить число 2010 на число 410 (101002 : 1002):
Рис. 5.12. Деление двоичных чисел (пример 1)
Ответ: 2010 : 410 = 510 = 101002 : 1002 = 1012.
Проверка: 1012 = 1 · 22 + 0 · 21 + 1 · 20 = 4 + 1 = 510.
Пример 2. Разделить число 7010 на число 710 (10001102 : 1112):
Рис. 5.13. Деление двоичных чисел (пример 2)
Ответ: 7010 : 710 = 1010 = 10001102 : 1112 = 10102.
Проверка: 10102 = 8 + 2 = 1010.
94
Пример 3. Разделить число 2510 на число 4010 (110012 :
1010002):
Рис. 5.14. Деление двоичных чисел (пример 3)
Ответ: 2510 : 4010 = 0,62510 = 110012 : 1010002 = 0,1012.
Проверка: 0,1012 = 1 · 2
–1
+ 0 · 2
–2
+ 1 · 2–3 = 0,5 + 0,125 =
= 0,62510.
5.4.2. Деление в восьмеричной системе счисления
Пример 1. Разделить число 3010 на число 610 (368 : 68):
Рис. 5.15. Деление восьмеричных чисел (пример 1)
Ответ: 30
10
: 610 = 510 = 368 : 68 = 58.
Пример 2. Разделить число 3510 на число 1410 (438 : 168):
Рис. 5.16. Деление восьмеричных чисел (пример 2)
Ответ: 35
10
: 1410 = 2,510 = 438 : 168 = 2,48.
Проверка: 2,48 = 2 · 80 + 4 · 8
1
= 2 + 0,5 = 2,510.
95
5.5. ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ ЧИСЕЛ В КОМПЬЮТЕРЕ: ПРЯМОЙ, ОБРАТНЫЙ, ДОПОЛНИТЕЛЬНЫЙ КОД
Целые числа в компьютере могут представляться со зна-
ком или без знака.
Целые числа без знака обычно занимают в памяти один
или два байта и принимают в однобайтовом формате значения от 0 до 28 – 1 (255), а в двухбайтовом формате — от 0 до 216 – 1
(65 535).
Таблица 5.1
Диапазоны значений целых чисел без знака
Формат числа в байтах
Запись с порядком
Обычная запись
1 2
0 … 2
8
– 1
0… 2
16
– 1
0…255
0…65536
Например, число 72
10
в однобайтовом формате записыва-
ется в виде 01001000
2
; в двухбайтовом формате — в виде
00000000 010010002.
Целые числа со знаком обычно занимают в памяти ком-
пьютера один, два или четыре байта, при этом самый левый (старший) разряд содержит информацию о знаке числа. Знак «плюс» кодируется нулем, а «минус» — единицей.
Таблица 5.2
Диапазоны значений целых чисел со знаком
Формат числа
в байтах
Запись с порядком
Обычная запись
1 2 4
27 … 27 – 1 –215 … 215 – 1 –231 … 231 – 1
–128…127
–32 768…32 767
2 147 483 648…2 147 483 647
Для представления положительных и отрицательных чи-
сел в машинах используются три формы записи: прямой код,
обратный код и дополнительный код. Причем две последние
96
формы применяются особенно широко, так как позволяют заме­нить неудобную для ЭВМ операцию вычитания на операцию сложения с отрицательным числом; дополнительный код обес­печивает более быстрое выполнение операций при помощи сумматора, поэтому в ЭВМ применяется чаще именно он.
Во всех трех формах записи используется следующий формат представления числа, содержащий два поля — поле зна­ка и поле модуля (рис. 5.17).
Поле знака
Поле модуля
Рис. 5.17. Общий формат представления числа в ЭВМ
Поле знака представлено одним разрядом, в котором уста­навливается 0, если число положительное, и 1, если число отри­цательное.
Поле модуля отражает количественную оценку числа и для каждого кода формируется по-разному. Количество разрядов поля модуля определяется диапазоном изменения отображае­мых чисел или точностью их представления.
Рассмотрим особенности записи целых чисел со знаком на примере однобайтового формата, при котором для знака отво­дится один разряд, а для цифр абсолютной величины — семь разрядов.
Прямой, обратный и дополнительный коды положитель- ного числа совпадают с двоичным кодом числа, причем значе- ние знакового разряда применяется равным нулю. Например, число 127
10
(11111112) в прямом, обратном и дополнительном
кодах записывается в виде 0 11111112.
Отрицательные числа в прямом, обратном и дополни- тельном кодах имеют разное изображение.
Прямой код отрицательного числа — это само двоичное число, причем в знаковом разряде фиксируется единица. Напри­мер, для числа –0,1001101 прямой код соответствует 1,1001101.
97
Прямой код используется для хранения числа в запоми­нающих устройствах, в устройствах ввода и вывода, а также при выполнении операций умножения.
Обратный код отрицательного числа образуется инвер­тированием всех цифр двоичного кода абсолютной величины числа, включая разряд знака: единицы заменяются нулями, а ну­ли — единицами; код знака при этом сохраняется, то есть оста­ется единичным. Например, для числа –0,1001101 обратный код будет 1,0110010.
Дополнительный код отрицательного числа образуется как результат суммирования обратного кода числа с единицей младшего разряда, а в знаковом разряде содержится единица. Например, для числа –0,1001100 дополнительным кодом явля­ется 1,0110011.
Чтобы преобразовать дополнительный код отрицательно­го числа в прямой код, необходимо в числовых разрядах этого числа заменить нули на единицы, а единицы на нули и приба­вить к полученному результату единицу младшего разряда.
В современных ЭВМ отрицательные десятичные числа при вводе автоматически преобразуются в обратный или допол­нительный двоичный код и в таком виде хранятся, перемещают­ся и участвуют в арифметических операциях. При выводе таких чисел из машины происходит обратное преобразование в отри- цательные десятичные числа.
5.6. АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ
С ДВОИЧНЫМИ ЧИСЛАМИ В ОБРАТНОМ КОДЕ
В большинстве компьютеров операция вычитания не ис­пользуется. Вместо нее производится сложение уменьшаемого с обратным или дополнительным кодом вычитаемого. Это поз­воляет существенно упростить структуру арифметико-логичес­кого устройства.
При сложении обратных кодов чисел А и В имеют место четыре основных и два особых случая. Рассмотрим их.
98
1. А и В положительные.
При суммировании складываются все разряды, включая разряд знака. Так как знаковые разряды положительных слагае­мых равны нулю, разряд знака суммы тоже равен нулю. Приве­дем пример.
Десятичная запись:
Двоичные коды:
3
+
7
10
0 0000011
+
0 0000111
0 0001010
Получен правильный результат.
2. А положительное, В отрицательное и по абсолютной
величине больше, чем А.
Десятичная запись:
Двоичные коды:
3
+
10
7
0 0000011
+
1 1110101
1 1111000
Обратный код числа 10 Обратный код числа 7
Получен правильный результат в обратном коде. При пе­реводе в прямой код биты цифровой части результата инверти­руются: 1 0000111 = 710.
3. А положительное, В отрицательное и по абсолютной
величине меньше, чем А.
Десятичная запись:
Двоичные коды:
10
+
3
7
0 0001010
+
1 1111100 0 0000110 + 1 0 0000111
Обратный код числа 3
99
Компьютер исправляет полученный первоначальный не-
правильный результат (6 вместо 7) переносом единицы из зна­кового разряда в младший разряд суммы.
4. А и В отрицательные.
Десятичная запись:
Двоичные коды:
3
+
7
10
1 1111100
+
1 1111000 1 1110100 + 1 1 1110101
Обратный код числа 3 Обратный код числа 7
Обратный код числа 10
Полученный первоначальный неправильный результат
(обратный код числа ‒1110 вместо обратного кода числа ‒1010) компьютер исправляет переносом единицы из знакового разряда в младший разряд суммы.
При переводе результата в прямой код биты цифровой ча-
сти числа инвертируются: 1 0001010 = 1010.
При сложении может возникнуть ситуация, когда старшие
разряды результата операции не помещаются в отведенной для нее области памяти. Такая ситуация называется переполнением разрядной сетки формата числа. Для обнаружения перепол­нения и оповещения о возникающей ошибке в компьютере ис­пользуются специальные средства. Приведем далее два возмож­ных случая переполнения.
5. А и В положительные, сумма А и В больше либо
равна 2
n
1
, где n — количество разрядов формата числа (для од-
нобайтового формата n = 8; 2
n
1
= 27 = 128).
Десятичная запись:
Двоичные коды:
65
+
97
162
0 1000001
+
0 1100001 1 0100010
Переполнение
100
Семи разрядов цифровой части числового формата недоста-
точно для размещения восьмиразрядной суммы (162
10
= 101000102),
поэтому старший разряд суммы оказывается в знаковом разряде. Это вызывает несовпадение знака суммы и знаков слагаемых, что является свидетельством переполнения разрядной сетки.
6. А и В отрицательные, сумма абсолютных величин А
и В больше либо равна 2
n
1
.
Десятичная запись:
Двоичные коды:
63
+
95
158
1 1000000
+
1 0100000 0 1100000 + 1
Обратный код числа 63 Обратный код числа 95
Переполнение
Здесь знак суммы тоже не совпадает со знаками слагае-
мых, что свидетельствует о переполнении разрядной сетки.
Все рассмотренные случаи имеют место и при сложении
дополнительных кодов чисел.
Ситуацию переполнения можно обнаруживать по факту появления «абсурдного» результата, но для этого необходимо помнить то, что в суммировании принимают участие операнды с одинаковыми знаками и знак полученного при этом результата отличен от знака операндов.
Более просто ситуация переполнения определяется при применении модифицированного кода (обратного или дополни­тельного). Модифицированные коды отличаются от базовых ко­дов только тем, что поле знака операндов имеет два разряда, и эти разряды имеют одинаковые значения: 00 — для положи­тельных чисел; 11 — для отрицательных чисел.
Если в результате сложения чисел в модифицированном коде полученный результат имеет в поле знака одинаковые зна­чения в обоих разрядах (00 или 11), то переполнения нет, если же разряды знакового поля имеют неодинаковые значения (10 или 01), то имеет место переполнение.
При этом если в поле знака имеет место значение 01 — результат положительный, а если 10, то полученный резуль­тат — отрицательный (основным носителем знака числа являет­ся левый разряд знакового поля).