Для упрощения схемной реализации вычислительных машин было бы удобно иметь вместо отдельных вычитателя и сумматора одно универсальное вычислительное устройство. Оказывается, что использование простого математического "трюка" позволяет приспособить сумматор для выполнения операции вычитания.
В общих чертах этот прием иллюстрируется на рис. 17.1. Рассматривается пример на вычитание десятичного числа 6 из десятичного числа 10 (в двоичной системе: 1010 - 0110). Пример решается сначала с использованием десятичных чисел, затем - двоичных чисел и, наконец, с использованием специального математического приема. В последнем случае техника вычислений следующая. Сначала двоичное вычитаемое записывается в форме поразрядного дополнения до 1 (всюду 1 заменяется на 0 и 0 - на 1) и затем складывается с уменьшаемым. Как видно из рисунка, дополнением до 1 двоичного числа 0110 является число 1001. При сложении получается промежуточный результат 10011. Далее последний перенос влево мы как бы продолжаем по круговой "траектории" (см. стрелку на рисунке) и завершаем его в разряде единиц. Такой перенос называется циклическим (или круговым) переносом. Складывая циклический перенос с остатком промежуточной суммы, получаем разность исходных двоичных чисел 1010 и 0110. Ответ: 100 (десятичное число 4).
Рис. 17.1. Вычитание двоичных чисел способом дополненя до 1 с циклическим переносом
Способ дополнения до 1 и циклического переноса неудобен для вычислений вручную. Однако этот способ очень просто реализовать на логических схемах. Вы увидите, что этот способ используется в сумматорах для вычитания, поэтому нужно знать, как вычитаются двоичные числа с помощью дополнения до 1 и циклического переноса.
Рис. 17.2. Использование полных сумматоров и инверторов в 4-разрядном вычитателе
Рассмотрим теперь использование сумматоров для выполнения операции двоичного вычитания. На рис. 17.2 показаны 4 полных сумматора, объединенные в систему, работающую как 4-разрядный параллельный вычитатель. Обратите особое внимание на 4 инвертора, обеспечивающие преобразование двоичного числа В3В2В1В0 в форму дополнения до 1. Эти инверторы установлены на входах В каждого сумматора; они инвертируют (дополняют до 1) значение каждого разряда вычитаемого. Сумматоры складывают двоичные числа A3A2A1A0 и В3В2В1В0. Дополнительный (циклический) перенос осуществляется по шине циклического переноса с выхода переноса С0 сумматора восьмерок на вход переноса Cm сумматора единиц (рис. 17.2). На выходном индикаторе (в правом нижнем углу рисунка) высвечивается разность двоичных чисел А3А2А1А0 и В3В2В1В0.
Для вычитания в вычислительных устройствах могут пользоваться числа в форме дополнения до 1, однако чаще используются числа в форме дополнения до 2 (в дополнительном коде).