Как сумматор выполняет вычитание целых чисел без знака?

Предположим, что 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 верен.

Если мой анализ верен, не правильно ли использовать сумматор для вычитания целых чисел без знака?

5
задан cpx 9 November 2011 в 12:37
поделиться