Cложение чисел на двоичном сумматоре дополнительного кода

Двоичным сумматором дополнительного кода (ДСДК) называется, сумматор оперирующий числами, представленными в дополнительном коде.

Основной особенностью ДСДК является наличие цепи переноса 1 переполнения из старшего разряда цифровой части в знаковый разряд (рисунок 8.1), и отсутствие обратной связи переноса 1 переполнения из знакового разряда в самый младший разряд числа.

Для определения правил сложения чисел в ДСДК необходимо рассмотреть следующую теорему.

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

При доказательстве теоремы, предполагаем, что числа представлены в форме с фиксированной запятой, стоящей перед старшим разрядом. Рассмотрим следующие случаи:

1. A>0, B>0, а A + B<1 числа положительные и нет переполнения. Для этого случая Aдоп = А, Вдоп = В , то Адоп + Вдоп = А + В = [A + B]доп – результат положительный. Покажем это на примере: А = 0,1010; В = 0,0100

Спр.=0.1110

1. A<0, B>0, а |A|>B. Для этого случая Адоп = q + |-A|, Вдоп = В тогда Адопдоп = =q + |A| + B = [A + B]доп – результат отрицательный.

А = – 0,1011; В = 0,0100

Результат получен отрицательный, это значит, что он представлен в дополнительном коде, и его необходимо перевести в прямой, чтобы получить истинный результат. Перевод числа из дополнительного кода в прямой осуществляем по следующему алгоритму: -все разряды числа (кроме знаковых) инвертируем (т. е. берется обратный код результата) и в младший разряд добавляется +1. Знак сохраняется.

3 A<0, B>0, а |A|<B. для этого случая Адоп = q + |A|, Вдоп = В тогда Адоп + + Вдоп = q + |A| + B. Так как значение этой суммы больше q, то появляется единица переноса в знаковый разряд, что равносильно изъятию из суммы q единиц, т.е. результат равен:

Адоп + Вдоп = А + В=Спр.

Пример. А = -0,0100; В = 0,1011.

4 A<0, B<0, а |A + B|<1. для этого случая Адоп = q +(-А) Вдоп = q +(-В), тогда Адоп + Вдоп = q +(-A) + q +(-B) = [A + B]доп – результат отрицательный и появится единица переноса из знакового разряда. Пример. . А = – 0,0100; В = – 0,1011.