Вычитатель
В электронике вычитатель может быть выполнен, используя такой же подход, как и в сумматоре.
Возможны как минимум два вида вычитателей:
- Вычитатель в прямых кодах.
- Вычитатель в дополнительных кодах, на обычном сумматоре с аппаратным получением кода второго дополнения
Вычитатель в прямых кодах
Как и в сумматоре, в большинстве случаев вычислений многобитных чисел, в выполнении вычитания для каждого разряда участвуют три операнда: уменьшаемое ([math]\displaystyle{ X_i }[/math]), первое вычитаемое ([math]\displaystyle{ Y_i }[/math]) и второе вычитаемое ([math]\displaystyle{ B_i }[/math]) - бит займа в предыдущий (менее значащий) разряд вычитателя. Два выхода являются битом разности ([math]\displaystyle{ D_i }[/math]) и битом займа из i+1 разряда ([math]\displaystyle{ B_{i+1} }[/math])[1].
- [math]\displaystyle{ D_i = X_i \oplus Y_i \oplus B_i= }[/math] f(3,1,150)10(Xi,Yi,Bi)
- карта Карно [math]\displaystyle{ B_i(1,2,3,7) }[/math]
- [math]\displaystyle{ \ B_{i+1} = }[/math] f(3,1,216)10(Xi,Yi,Bi)
Таблица истинности для двоичного вычитателя: f(11,10,110100010010110)2(x,y,z)=f(3,2,55446)10(x,y,z)
X | Y | Z(N-1) | R=X [math]\displaystyle{ \oplus }[/math] Y [math]\displaystyle{ \oplus }[/math]Z= f(3,1,150)10(x,y,z) |
Z(N+1)= f(3,1,216)10(x,y,z) |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 1 |
0 | 1 | 0 | 1 | 1 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 0 |
1 | 1 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | 1 |
Z(N+1) - бит займа из n+1 разряд
Z(N-1) - бит займа в n-1 разряда, второе вычитаемое
Для уменьшения стоимости вычитатель обычно выполняется внутри двоичного сумматора. Сумматор-вычитатель снабжается переключателем сложение/вычитание.
Вычитатель в дополнительных кодах
Вычитатель в дополнительных кодах строится на обычном сумматоре с аппаратным получением кода второго дополнения.
Процесс двоичного вычитания с использованием обычного сумматора и с аппаратным получением кода второго дополнения описан ниже[2][3].
При вычитании на обычном сумматоре для второго операнда используется стандартная запись второго дополнения (дополнительный код).
Чтобы получить первое дополнение, второй операнд инвертируется.
Чтобы получить второе дополнение, к инверсии второго операнда добавляется единица, используя вход переноса.
- [math]\displaystyle{ -B = \bar B + 1 }[/math] (определение отрицания второго дополнения)
- [math]\displaystyle{ \begin{alignat}{2} A - B & = A + (-B) \\ & = A + \bar B + 1 \\ \end{alignat} }[/math]
См. также
- Двоичная логика
- Сумматор
- Сумматор с предварительным просмотром переноса
- Сумматор с сохранением переноса
- Суммирующая машина
- Сумматор-вычитатель
- Полусумматор
Ссылки
- ↑ http://alpha3300.karelia.ru/koi/posob/log_basis/vichet.html (недоступная ссылка) Логические основы ЭВМ. Двоичное вычитание.
- ↑ http://alpha3300.karelia.ru/koi/posob/log_basis/vichet2.html (недоступная ссылка) Логические основы ЭВМ. Использование сумматоров для вычитания.
- ↑ http://www.pedsovet.info/info/pages/referats/info_00025.htm Архивная копия от 13 июня 2012 на Wayback Machine Сумматоры. Вычитатель