Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
учебное пособие ИНФОРМАТИКА.doc
Скачиваний:
129
Добавлен:
09.06.2015
Размер:
2.16 Mб
Скачать

2.5.3.Дополнительный код

Дополнительный код двоичного числа G, представляемого в n - разрядной сетке, определяется как

G , при G>=0;

Gдоп = С - |G|, при G<0,

где С – величина, равная весу разряда, следующего за старшим разрядом используемой разрядной сетки (для дробей С=2, а для целых чисел С=2n). Диапазон представляемых дополнительным кодом чисел отличается от диапазона прямого или обратного кода. Для положительных и отрицательных чисел поддиапазоны различны. Для положительных чисел (как и у прямого кода) 0<=G<A, а для отрицательных 0<|G|<=A. Из определения дополнительного кода следует, что старший (знаковый) разряд у кода положительного числа равен 0, а у кода отрицательного числа 1. В цифровых разрядах дополнительного кода положительного числа представляется модуль этого числа. Дополнительный код отрицательного числа удобно получать через обратный код.

Если рассматривать обратный и дополнительный коды числа как двоичные числа без знаков, то для отрицательных двоичных дробей Gдоп=Gобр+2-(n-1), а для отрицательных двоичных целых чисел Gдоп=Gобр+1.

Таким образом, дополнительный код отрицательного числа может быть получен из обратного путем прибавления 1 к младшему разряду обратного кода.

При выполнении расчетов на ЭВМ может возникнуть как "положительный", так и "отрицательный" ноль. Положительный ноль в прямом, дополнительном и обратном кодах имеет вид:

(+0)пр=000...0;

(+0)доп=000...0;

(+0)обр=000...0.

Отрицательный ноль изображается

в прямом коде

(-0)пр=100...0,

в обратном коде

(-0)обр=111...1,

в дополнительном коде отрицательный ноль отсутствует.

При представлении чисел дополнительным кодом ноль имеет единственное изображение. При применении обратного кода "положительный" и "отрицательный" ноль имеют разные изображения. Изменение знака числа, представленного в прямом коде, выполняется инвертированием его знакового разряда.

Изменению знака числа соответствует инвертирование его кода, если число представлено в обратном коде, и инвертирование и добавление 1 к младшему разряду, если число представлено в дополнительном коде.

Рассмотрим применение обратного и дополнительного кодов при алгебраическом сложении n - разрядных двоичных чисел G и Q. Могут быть сформулированы следующие правила (предполагаем, что модуль алгебраической суммы меньше 1 для дробей и меньше 2n-1 для целых, и, следовательно, код суммы представим в n - разрядной сетке).

При алгебраическом сложении двух двоичных чисел, представленных обратным (или дополнительным) кодом, производится арифметическое суммирование этих кодов, включая разряды знаков. При возникновении переноса из разряда знака единица переноса прибавляется к младшему разряду суммы кодов (такой перенос называется круговым или циклическим) при использовании обратного кода и отбрасывается при использовании дополнительного кода. В результате получается алгебраическая сумма в обратном (дополнительном) коде.

Пример.

Разрядная сетка n=8. Сложить в обратном коде -3 и -7.

Число (7)10 = (00000111)2 (-7)обр= 11111000;

число (3)10 = (00000011)2 (-3)обр=11111100;

складываем

11111000

+11111100

11110100

+ 1

11110101 (обратный код суммы)

Для проверки правильности вычисления инвертируем полученный код и получим код 00001010. Это соответствует (10)10. Получили число, равное сумме с противоположным знаком.

При алгебраическом сложении двух чисел, помещающихся в разрядную сетку, может возникнуть переполнение, т.е. может образоваться сумма, требующая для своего представления на один цифровой разряд больше по сравнению с разрядной сеткой слагаемых.

Правило (признак) переполнения разрядной сетки.

При алгебраическом сложении двух двоичных чисел с использованием дополнительного (обратного) кода для их представления признаком переполнения является наличие переноса в знаковый разряд суммы при отсутствии переноса из ее знакового разряда (положительное переполнение) или наоборот (отрицательное переполнение). Если и в знаковый, и из знакового разряда суммы есть переносы или нет этих переносов, то переполнение отсутствует. При положительном переполнении результат операции положительный, при отрицательном – отрицательный.