Изменения

Перейти к: навигация, поиск

Реализация вычитания сумматором

453 байта добавлено, 19:29, 6 декабря 2011
Нет описания правки
==Оптимизация==
Очевидно, что такой подход к вычитанию сумматором не оптимален, так как придётся вносить в схему последовательно 2 сумматора или блок памяти, для запоминания промежуточных действий таких как, сложение с единицей.Что бы упростить вычисления нужно воспользоваться лишним битом переноса в сумматоре, в который посылают ноль, и послать в него единицу при вычитании и ноль при суммировании. Вместо того что бы инвертировать вычитаемое число, можно сделать XOR бита первого переноса с каждым битом вычитаемого числа.<br />Таким образом, можно посылать в полученный ''арифмометр для сложения и вычитания'' числа точно так же как и при сложении, только первый бит переноса будет отвечать за знак операции: 0-сложение 1-вычитание.
==Пример реализации вычитания сумматором==
!<math> \mathbf {\color{OliveGreen}0 , 1 ... N} </math>
|[[Сумматор|блоки]] [[Каскадный сумматор|каскадного]] или [[Двоичный каскадный сумматор|двоичного каскадного]] сумматора
|[[Файл:Full_Adder.png|250px|Блок сумматор]]
|}
|[[Файл:Arithmometer_SUM_SUB.png|400px|Арифмометр]]
[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 Рабочий пример арифмометра]
 
[[Категория:Дискретная математика и алгоритмы]]
[[Категория:Схемы из функциональных элементов]]
120
правок

Навигация