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

 

Дополнительным кодом отрицательного числа является поразрядная инверсия модуля его разрядных цифр с прибавлением единицы к этому инверсному коду. Число ноль в дополнительном коде трактуется однозначно вне зависимости от области перебора и равно “положительному” нулю.

Таблица 3.1 Кодирование 3х разрядного модуля числа

п/п Прямой код Обратный код Дополнительный код
Знак 22 21 20 Знак 22 21 20 Знак 22 21 20
+7 0 1 1 1 0 1 1 1 0 1 1 1
+6 0 1 1 0 0 1 1 0 0 1 1 0
+5 0 1 0 1 0 1 0 1 0 1 0 1
+4 0 1 0 0 0 1 0 0 0 1 0 0
+3 0 0 1 1 0 0 1 1 0 0 1 1
+2 0 0 1 0 0 0 1 0 0 0 1 0
+1 0 0 0 1 0 0 0 1 0 0 0 1
+0
-0
-1 1 0 0 1 1 1 1 0 1 1 1 1
-2 1 0 1 0 1 1 0 1 1 1 1 0
-3 1 0 1 1 1 1 0 0 1 1 0 1
-4 1 1 0 0 1 0 1 1 1 1 0 0
-5 1 1 0 1 1 0 1 0 1 0 1 1
-6 1 1 1 0 1 0 0 1 1 0 1 0
7 1 1 1 1 1 0 0 0 1 0 0 1

 

Примечание:

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

 

2) Сложение цифр в прямом коде осуществляется по правилам обычной арифметики:

 

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

 

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

 

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

 

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

Выводы к лекции №3:

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

 

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

 

3) В прямом коде сложение чисел осуществляется по правилам обычной арифметики и требует анализ знака чисел, сравнение модуля по величине, операции сложения или вычитания. Знаковый разряд при операциях в прямом коде как и в обычной арифметике, эквивалентной “+/-“ значению числа, с разрядами модулями переносом не связан.

 

4) Для обратного и дополнительного кода требуется только операция поразрядного сложения со сквозным переносом от младшего до знакового разряда.

 

5) При сложении чисел необходимо:

 

– выравнивать их разрядные сетки по младшим разрядам, заполняя недостающие до старшего нулями;

 

– при ручному выполнении операций сложения использовать только 2 слагаемых операнда, так как большое их число может привести к более чем одному переносу из старшего разряда в знаковый;

 

– если при сложении двух чисел с разными знаками перенос в знаковый разряд вызовет переполнение, то единицу этого переполнения следует:

а) в обратном коде прибавить к младшему разряду полученной суммы.

б) в дополнительном коде отбросить от результата полученной суммы.

Рис. 3.2 Структура сумматора двоичных кодов.