Реализация вычитания сумматором — различия между версиями
Alex z (обсуждение | вклад) |
Alex z (обсуждение | вклад) |
||
Строка 25: | Строка 25: | ||
{| border="1" | {| border="1" | ||
![[Файл:XOR_logic_element.png|100px|XOR]] | ![[Файл:XOR_logic_element.png|100px|XOR]] | ||
− | | логический [[Реализация булевой функции схемой из функциональных элементов|функциональный элемент]]'''XOR'''<br />'''A''' и '''B''' входы и '''Y''' выход. | + | | логический [[Реализация булевой функции схемой из функциональных элементов|функциональный элемент]] '''XOR'''<br />'''A''' и '''B''' входы и '''Y''' выход. |
!<math> \mathbf A \oplus B = Y</math><br /><math> \mathbf 0 \oplus 0 = 0</math><br /><math> \mathbf 0 \oplus 1 = 1</math><br /><math> \mathbf 1 \oplus 0 = 1</math><br /><math> \mathbf 1 \oplus 1 = 0</math> | !<math> \mathbf A \oplus B = Y</math><br /><math> \mathbf 0 \oplus 0 = 0</math><br /><math> \mathbf 0 \oplus 1 = 1</math><br /><math> \mathbf 1 \oplus 0 = 1</math><br /><math> \mathbf 1 \oplus 1 = 0</math> | ||
|- | |- |
Версия 19:33, 6 декабря 2011
Содержание
Преобразование чисел для вычитания сумматором
Что бы реализовать вычитание каскадным или двоичным каскадным сумматором, нужно сложить на нём уменьшаемое с противоположным по знаку вычитаемым, так же как и при вычитании обычных чисел. Тогда полученная сумма будет разностью данных чисел.
Инверсия знака записанного в двоичном виде числа происходит точно так же, как и в дополнительном коде.
Данное число нужно инвертировать и прибавить к нему единицу.
Например число
будет записано как , так как , а
Оптимизация
Очевидно, что такой подход к вычитанию сумматором не оптимален, так как придётся вносить в схему последовательно 2 сумматора или блок памяти, для запоминания промежуточных действий таких как, сложение с единицей. Что бы упростить вычисления нужно воспользоваться лишним битом переноса в сумматоре, в который посылают ноль, и послать в него единицу при вычитании и ноль при суммировании. Вместо того что бы инвертировать вычитаемое число, можно сделать XOR бита первого переноса с каждым битом вычитаемого числа. Таким образом, можно посылать в полученный арифмометр числа точно так же как и при сложении, только первый бит переноса будет отвечать за знак операции: 0-сложение 1-вычитание.
Пример реализации вычитания сумматором
Условные обозначения | Изображение арифмометра | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
См. также
Сумматор
Матричный умножитель
Реализация булевой функции схемой из функциональных элементов
Ссылки
Subtractor
Negative Numbers and Binary Subtraction
Рабочий пример арифмометра