Сложение чисел в обратном коде
При использовании обратного кода вычитание можно заменить сложением в обратном коде. При этом сумма обратных кодов равна обратному коду алгебраической суммы.
Правило сложения в обратных кодах.Сложение чисел в обратных кодах выполняется по обычным правилам, причем знаковый разряд участвует в операции сложения наравне с обычными разрядами. При появлении единицы переноса из знакового разряда ее следует циклически перенести в младший разряд и просуммировать с полученным ранее результатом.
Заметим, что это правило чисто формально приводит к правильному результату, а фактически выполнять сложение единиц с разными весами нельзя. Просто при наличии переноса для получения обратного кода необходимо добавить единицу в младший разряд. Для этого и используется единица переноса.
Пример 2. Сложить два числа в обратных кодах: В = - 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.
Дополнительный код
Идея образования дополнительного кода возникла в связи со стремлением избавиться от операции циклического переноса, которая приводит к увеличению времени выполнения операции сложения. Оказывается , что для устранения циклического переноса достаточно уменьшить величину отрицательного веса С на единицу младшего разряда.
Положительные числа в прямом и дополнительном кодах имеют одинаковую форму записи. Для записи отрицательного числа в дополнительном коде достаточно образовать обратный код этого числа и к нему прибавить единицу младшего разряда 2-m.
Пример 3. Получить дополнительный код для чисел: A=+1001,101(2), B=-1000,010(2) (n=4, m=3).
Решение: [A]доп.=0.1001,101. [B]обр.=1.0111,101
1
[B]доп.=1.0111,110
Для образования прямого кода отрицательного числа из дополнительного кода следует вычесть единицу младшего разряда (получим обратный код) и заменить 1 на 0, а 0 на 1 (получим прямой код).
Рассмотренный метод неудобен тем, что содержит операцию вычитания. В ЭВМ прямой код отрицательного числа получают путем образования дополнительного кода от дополнительного, т.е. образуется обратный код и к нему прибавляется 1 младшего разряда.
Пример 4. Получить прямой код из дополнительного: [B]доп.=1.0111,110.
Решение. ([B]доп.)обр.=1.1000,001
1
[B]пр.=1.1000,010
Как представляется нуль в дополнительном коде:
+0: [0]доп.= 0.000…00 ,
-0: [0]доп.=1.111 … 1
+ 1
[0]доп.=0.000 … 0 ,
т.е. нуль в дополнительном коде имеет единственное представление.
Правило сложения в дополнительных кодах. Для того чтобы при сложении дополнительных кодов двух чисел получить дополнительный код суммы, необходимо сложить дополнительные коды слагаемых по правилам сложения двоичных чисел, рассматривая знаковые разряды как обычные цифровые. При возникновении единицы переноса из знакового разряда ее следует опустить.
Пример 5. Сложить в дополнительных кодах числа:
А1 =+7(10) = +111(2) и В1 =-3(10) = -011(2),
А2 =-7(10) = -111(2) и В2 =+3(10) = +011(2) .
Решение.
[A1]доп = 0.111 [A2] доп = 1.001
[B1]доп = 1.101 [B2] доп = 0.011
[C1]доп = 0.100, [C2] доп = 1.100
[C2]пр = 1.100
С1 = + 100(2) = + 4(10) , С2 = -100(2) = - 4(10).
Сравнивая представление чисел в различных кодах, можно сделать следующие выводы:
- перевод чисел из прямого кода в обратный осуществляется проще, чем в дополнительный;
- в дополнительном коде проще выполняется сложение, т.к. отсутствует циклический перенос.
Поэтому обратный и дополнительный коды примерно равноценны при их реализации на ЭВМ.