На самом деле, хоть и функции их действительно одинаковы - для сложения отрицательных чисел, выбор кода существенно влияет на конфигурацию АЛУ.
Вот например, сложим числа (первый разряд - знак):
| Код | 0 011001 = 25 1 010001 = - 17
обратный код:
0 011001 1 101110 - ------ 10 000111 | ^ | (+) | - получили циклический перенос, т.е. +-------+ нужно выполнять сложение еще раз!
0 000111 0 000001 - ------ 0 001000 = 8
Дополнительный код:
0 011001 1 101111 - ------ 10 001000 ^ | +- этот разряд просто выбрасываем!
|
Таким образом, при использовании обратного кода, сложение выполняется дольше, чем при использовании дополнительного.
Однако, все дело в том, что использование дополнительного кода усложняет устройство управления и АЛУ. Получение дополнительного кода само по себе осуществляется путем сложения, тогда как получение обратного кода лугко организовать - дополнительного оборудования не нужно вообще. |