В курсе цифровые устройства изучается внутреннее устройство двоичных сумматоров, способных осуществить суммирование многоразрядных кодов. Однако кроме операции суммирования часто требуется осуществлять вычитание двоичных кодов. Двоичные коды, при помощи которых можно записывать отрицательные числа уже рассматривались ранее. Там же было показано, что при использовании дополнительных кодов операцию вычитания двух положительных чисел можно заменить операцией суммирования положительного и отрицательного числа, при этом получение отрицательного числа из положительного числа является элементарной операцией. Для этого необходимо проинвертировать число и прибавить к нему 1.
Схема вычитателя числа A из числа B приведена на рисунке 1, а схема вычитателя числа B из числа A приведена на рисунке 2.

Рисунок 1. Схема вычитателя A − B

Рисунок 2. Схема вычитателя B − A
В данных схемах инвертирование числа производится блоком логических инверторов, а прибавление единицы производится подачей питания на вход переноса сумматора PI. Если же потребуется в процессе вычислений изменять арифметическую операцию, то в структурную схему вычислительного устройства можно ввести коммутатор (мультиплексор). Такая схема арифметического устройства приведена на рисунке 3.

Рисунок 3. Структурная схема арифметического устройства.
В приведённой на рисунке 3 схеме используются четырёхвходовые мультиплексоры, для управления каждым из которых достаточно двух бит. То есть для управления всей схемы в целом достаточно четырёх проводов управления. Попытаемся построить таблицу операций, которые будет выполнять арифметико-логическое устройство (АЛУ), схема которого приведена на рисунке 3. На результат операции будет влиять вход переноса сумматора PI, поэтому этот вход тоже включим в состав кода, управляющего схемой АЛУ. Операции, которые выполняются арифметической схемой в зависимости от поданного на управляющие линии кода, приведены в таблице 1.
Таблица 1. Коды математических операций арифметического устройстваНомер строки | Управляющий код | Выполняемая операция | ||||
---|---|---|---|---|---|---|
K0 | K1 | K2 | K3 | PI | ||
0 | 0 | 0 | 0 | 0 | 0 | S = A + B |
1 | 0 | 0 | 0 | 0 | 1 | S = A + B + 1 |
2 | 0 | 0 | 0 | 1 | 0 | S = B − A − 1 |
3 | 0 | 0 | 0 | 1 | 1 | S = B − A |
4 | 0 | 0 | 1 | 0 | 0 | S = B − 1 |
5 | 0 | 0 | 1 | 0 | 1 | S = B |
6 | 0 | 0 | 1 | 1 | 0 | S = B |
7 | 0 | 0 | 1 | 1 | 1 | S = B + 1 |
8 | 0 | 1 | 0 | 0 | 0 | S = A − B − 1 |
9 | 0 | 1 | 0 | 0 | 1 | S = A − B |
10 | 0 | 1 | 0 | 1 | 0 | S = −A − B − 2 |
11 | 0 | 1 | 0 | 1 | 1 | S = −A − B − 1 |
12 | 0 | 1 | 1 | 0 | 0 | S = −B − 2 |
13 | 0 | 1 | 1 | 0 | 1 | S = −B − 1 |
14 | 0 | 1 | 1 | 1 | 0 | S = −B − 1 |
15 | 0 | 1 | 1 | 1 | 1 | S = −B |
16 | 1 | 0 | 0 | 0 | 0 | S = A − 1 |
17 | 1 | 0 | 0 | 0 | 1 | S = A |
18 | 1 | 0 | 0 | 1 | 0 | S = −A − 2 |
19 | 1 | 0 | 0 | 1 | 1 | S = −A − 1 |
20 | 1 | 0 | 1 | 0 | 0 | S = −2 |
21 | 1 | 0 | 1 | 0 | 1 | S = −1 |
22 | 1 | 0 | 1 | 1 | 0 | S = −1 |
23 | 1 | 0 | 1 | 1 | 1 | S = 0 |
24 | 1 | 1 | 0 | 0 | 0 | S = A |
25 | 1 | 1 | 0 | 0 | 1 | S = A + 1 |
26 | 1 | 1 | 0 | 1 | 0 | S = −A − 1 |
27 | 1 | 1 | 0 | 1 | 1 | S = −A |
28 | 1 | 1 | 1 | 0 | 0 | S = −1 |
29 | 1 | 1 | 1 | 0 | 1 | S = 0 |
30 | 1 | 1 | 1 | 1 | 0 | S = 0 |
31 | 1 | 1 | 1 | 1 | 1 | S = +1 |