Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Кодирование информации и системы счисления. Учебное пособие
.pdf
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, то полученный результат — отрицательный (основным носителем знака числа является левый разряд знакового поля).
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
