Предположим, что A
и B
- положительные целые числа со знаком, тогда для AB
он рассчитывается с использованием дополнения A + 2
к B
.
Например, в 4-битной двоичной системе для целых чисел со знаком мы имеем
7-3 = 0111-0011 = 0111 + 1101 = (1) 0100
, {{ 1}} 1 в скобках - это бит переноса. Согласно правилу переполнения для целого числа со знаком, мы знаем, что переполнения нет, и поэтому результат правильный.
Однако что произойдет с целыми числами без знака, если мы вычислим 7-3
? Если мы воспользуемся тем же способом, о котором говорилось выше:
7-3=0111-0011=0111+1101=(1)0100
, то, согласно правилу переполнения для беззнаковых целых чисел, происходит переполнение из-за выполнения. Другими словами, 0100
неверно из-за переполнения. Но на самом деле мы знаем, что результат 0100
верен.
Если мой анализ верен, не правильно ли использовать сумматор для вычитания целых чисел без знака?