120
правок
Изменения
Нет описания правки
Что бы реализовать вычитание [[Каскадный сумматор|каскадным]] или [[Двоичный каскадный сумматор|двоичным каскадным сумматором]], нужно сложить на нём уменьшаемое с противоположным по знаку вычитаемым, так же как и при вычитании обычных чисел. Тогда полученная сумма будет разностью данных чисел.
<mathtex> \large x - y = x +(-y)</mathtex> Инверсия знака записанного в двоичном виде числа происходит точно так же, как и в [[Представление целых чисел: прямой код, код со сдвигом, дополнительный код#Дополнительный код|дополнительном коде]].
Данное число нужно инвертировать и прибавить к нему единицу.
<mathtex> \large -y = (\lnot y) + 1 </mathtex>
Например число <mathtex> \large - 19</mathtex> будет записано как <mathtex> \large 01101 </mathtex>, так как <mathtex> \large 19_\mathrm{10} = 10011_\mathrm{2}</mathtex>, а <mathtex> \large (\lnot 10011) + 1 = 01100 + 1 = 01101 </mathtex>
{| border="1"
![[Файл:XOR_logic_element.png|100px|XOR]]
| логический [[Реализация булевой функции схемой из функциональных элементов|функциональный элемент]] '''XOR'''<br /> '''A''' и '''B''' входы и '''Y''' выход.!<mathtex> \large A \oplus B = Y</mathtex> <br /><mathtex> \large 0 \oplus 0 = 0</math><br /tex> <mathtex> \large 0 \oplus 1 = 1</mathtex> <br /><mathtex> \large 1 \oplus 0 = 1</mathtex> <br /><mathtex> \large 1 \oplus 1 = 0</mathtex>
|-
!<math> \mathbf {\color{Goldenrod}\mbox{A}_\mathrm{0} , \mbox{A}_\mathrm{1} ... \mbox{A}_\mathrm{N}} </math>
|'''0'''-ой '''1'''-ый ... '''n'''-ный биты первого слагаемого или уменьшаемого.
!<mathtex> \mathbf large A </mathtex>
|-
!<math> \mathbf {\color{Red}\mbox{B}_\mathrm{0} , \mbox{B}_\mathrm{1} ... \mbox{B}_\mathrm{N}} </math>
|'''0'''-ой '''1'''-ый ... '''n'''-ный биты второго слагаемого или вычитаемого.
!<mathtex> \mathbf large B</mathtex>
|-
!<math> \mathbf {\color{Green}\mbox{S}_\mathrm{0} , \mbox{S}_\mathrm{1} ... \mbox{S}_\mathrm{N}} </math>
|'''0'''-ой '''1'''-ый ... '''n'''-ный биты ответа.
!<mathtex> \large S = A \pm B</mathtex>
|-
!<math> \mathbf {\color{Blue}T} </math>
|бит отвечающий за знак операции<br /> '''T''' подключён к '''C<small>0</small>''' 0-вому биту переноса в сумматоре!|<center>'''0 ''' если <mathtex> \large S = A + B</mathtex><br />'''1 ''' если <mathtex> \large S = A - B</mathtex><br /center>
|-
!<math> \mathbf {\color{OliveGreen}0 , 1 ... N} </math>
==См. также==
*[[Двоичный_каскадный_сумматор|Сумматор]]<br />*[[Матричный_умножитель|Матричный умножитель]]<br />*[[Реализация_булевой_функции_схемой_из_функциональных_элементов|Реализация булевой функции схемой из функциональных элементов]]
==Ссылки==
*[http://en.wikipedia.org/wiki/Subtractor Subtractor]<br />*[http://www.play-hookey.com/digital/binary_subtraction.html Negative Numbers and Binary Subtraction]<br />*[http://tams-www.informatik.uni-hamburg.de/applets/hades/webdemos/20-arithmetic/40-addsub/add-sub.html Рабочий пример арифмометра]
[[Категория:Дискретная математика и алгоритмы]]
[[Категория:Схемы из функциональных элементов]]