Сложение чисел в обратном коде

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

Рассмотрим возможные случаи при сложении чисел В и С : В+С=D.

1. B > C , C > 0. Так как положительные числа в прямом и обратном кодах записываются одинаково, то и складываются они по известному правилу.

2. Рассмотрим сложение чисел с разными знаками: В > 0, C < 0.

 
 


[B]обр = 0.bn-1bn-2 … b1b0,b-1 … b-m,

 
 


[C]обр = 1.cn-1cn-2 … c1c0,c-1 … c-m, .

Тогда

[B]обр + [C]обр = [D]обр = dn.dn-1 … d1d0,d-1 … d-m ,

D . (3.5)

 

Рассмотрим два случая в выражении (3.5):

 
 


1.

 

Тогда нет переноса в n–й разряд и [D]обр имеет вид:

[D]обр = 1.dn-1 … d1d0,d-1 … d-m,

т.е. результат получаем, пользуясь обычными правилами сложения.

Пример 2.20. Сложить два числа в обратных кодах: В = + 3(10),

С = - 5(10), n=3, m=0.

Решение. В = + 011(2), С = - 101(2).

[B]обр =0.011

[C]обр =1.010

[D]обр =1.101 .

[D]пр = 1.010, D = - 010(2) = - 2(10) , т.е. + 3(10) + (-5)(10) = - 2(10).

2.

 

 

В данном случае имеется единица переноса в n-ный разряд и тогда можно записать:

 

 

Подставив это выражение, получим:

 
 


 

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

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

Пример 3.21. Сложить два числа в обратных кодах: В = +5 (10),

С = -3 (10) , n = 3, m = 0.

Решение. В = +101(2), С = - 011(2).

[B]обр = 0.101

[C]обр = 1.100

0.001

+1

[D]обр = 0.010

[D]пр = 0.010, D = + 010(2) = + 2(10), т.е. +5(10) + (-3)10 = +2(10).

 

3. В < 0, C < 0. В этом случае аналогично можно показать , что и при сложении двух отрицательных чисел необходимо выполнять циклический перенос.

Пример 3.22. Сложить два числа в обратных кодах: В = - 2(10), С = - 5(10), n=3, m=0.

Решение. В = - 010(2), С = -101(2).

[B]обр = 1.101

[C]обр = 1.010

0.111

+1

[D]обр = 1. 000

[D]пр = 1.111, D = - 111(2) = - 7(10), т.е. (-2)10 + (-5)10 = -710.

 

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

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