19.5.6. СЛОЖЕНИЕ ЧИСЕЛ С ЛЮБЫМИ ЗНАКАМИ
Схема вычитания, представленная на рис. 19.32, в случае отрицательной разности выдает ее значение в форме двоичного дополнения. Старший разряд переноса можно рассматривать при этом непосредственно как знак:
означает положительный результат,
отрицательный. Такое представление используется преимущественно при выполнении операций со знакопеременными числами (представление чисел в форме двоичного дополнения). Для 8-разрядного числа имеется следующая область определения:
Такое представление чисел объясняется тем, что знаковый разряд
можно рассматривать как обычный двоичный разряд определенного веса, взятый, однако, с отрицательным знаком. В случае 8-разрядного положительного числа
старший разряд
и получим
В случае отрицательного 8-разрядного числа Вв старший разряд
и получим
Модуль
в этом случае равен
т.е. представляет собой двоичное дополнение
Рассмотрим теперь, как должна работать суммирующая схема, чтобы правильно оперировать с положительными и отрицательными числами, представленными в форме двоичного дополнения. В соответствии с приведенным выше примером рассмотрим суммирование двух чисел
разрядность которых составляет 7 бит плюс знаковый разряд
Суммирующая схема реализует выражение
Рассмотрим сначала случай
Эти числа складываются совершенно правильно. В отличие от сумматора, предназначенного только для положительных чисел, мы должны, разумеется, сделать одно ограничение: так как теперь восьмой двоичный разряд рассматривается как знак, его уже нельзя использовать как разряд переноса. Поэтому сумма не должна выходить за пределы 7-разрядного числа. Следовательно, она не может быть более
так как в противном случае результат будет ошибочно рассматриваться как отрицательное число.
Случай, когда одно из двух чисел
или
задано в форме двоичного дополнения, уже рассматривался в предыдущем разделе, поскольку там рычитание было заменено на сложение с двоичным дополнением вычитаемого. Чтобы получить правильное значение знака разности, разряд переноса инвертировался. Так как числа
равноправны, сигнал переноса необходимо инвертировать всегда, когда либо А, либо В отрицательно.
Кроме того, может встретиться случай, когда к А, к В отрицательны. Сумма двоичных дополнений составит
Очевидно, что вследствие сложения двух членов дополнений, равных 27, разряд переноса (восьмой двоичный разряд
не изменится; следовательно, в нем непосредственно появится знак.
Таблща 19.9 (см. скан) Таблица для определения мака суммы
Все рассмотренные комбинации представлены в табл. 19.9, позволяющей определить знак
по величине старшего переноса
По этой таблице можно составить следующую булеву функцию:
Ее схемная реализация представлена на рис. 19.36.
Как показывает сравнение с рис. 19.27, выражение (19.10) идентично сложению в полном сумматоре. Поэтому 8-разрядное - число
включая знак, можно вычислить с помощью 8-разрядного сумматора (рис. 19.37), не подвергая знаковый разряд какой-либо особенной обработке.
Определение переполнения
Как уже упоминалось, при суммировании двух чисел с одинаковыми знаками можно получить неверный результат из-за выхода числа из допустимой области (переполнения разрядной сетки). Однако такая ошибка обнаруживается весьма просто. Если
положительны, то их сумма также положительна. Появление
Рис. 19.36. Суммирование двух двоичных чисел с любыми знаками при представлении отрицательных чисел в форме двоичного дополнения.
Рис. 19.37. Включение логики определения знака суммы в арифметический блок.
цательного знака
означает положительное переполнение
Отсюда следует
Если оба слагаемых отрицательны, результат также должен быть меньше нуля. В этом случае появление положительного знака является критерием для обнаружения отрицательного переполнения. Отсюда следует
Для любого переполнения на основании полученных выражений можно записать
Чтобы обнаружить возникновение неверного результата из-за переполнения сумматора, можно дополнить его схему специальными цепями для вычисления функции (19.11). Например, это предусмотрено в четырехразрядном арифметическом устройстве
фирмы Advanced Micro Devices.