Покажем, что при использовании обратного кода вычитание можно заменить сложением в обратном коде. При этом сумма обратных кодов равна обратному коду алгебраической суммы.
Рассмотрим возможные случаи при сложении чисел В и С : В+С=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.
Правило сложения в обратных кодах. Сложение чисел в обратных кодах выполняется по обычным правилам, причем знаковый разряд участвует в операции сложения наравне с обычными разрядами. При появлении единицы переноса из знакового разряда (или разряда с отрицательным весом) ее следует циклически перенести в младший разряд и просуммировать с полученным ранее результатом.
Заметим, что это правило чисто формально приводит к правильному результату, а фактически выполнять сложение единиц с разными весами нельзя. Просто при наличии переноса для получения обратного кода необходимо добавить единицу в младший разряд. Для этого и используется единица переноса.