Изменения

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

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

746 байт убрано, 19:07, 4 сентября 2022
м
rollbackEdits.php mass rollback
Очевидно, что реализация преобразования в дополнительный код отдельным сумматором делает вычисление разности в два раза медленнее, чем вычисление суммы. Чтобы ускорить вычисления нужно воспользоваться первым битом переноса в сумматоре: для реализации суммы в него посылают ноль, а для реализации вычитания посылать в него единицу при вычитании и ноль при суммировании. Вместо того, чтобы инвертировать вычитаемое число, можно делать XOR бита первого переноса с каждым битом вычитаемого числа. Таким образом, полученная схема будет работать как для суммирования, так и для вычитания, и при этом вычитание не требует больше времени, чем сложение.
==Пример Схема реализации вычитания сумматором==
{|
|-
!Условные обозначения
!Изображение арифмометрасхемы
|-
|
|-
!<tex> \mathbf {\mbox{A}_\mathrm{0} , \mbox{A}_\mathrm{1}, \dots, \mbox{A}_\mathrm{N}} </tex>
|'''0'''-ой '''1'''-ый ... '''n'''-ный биты первого слагаемого или (уменьшаемого.)
!<tex> \large A </tex>
|-
!<tex> \mathbf {\mbox{B}_\mathrm{0} , \mbox{B}_\mathrm{1}, \dots, \mbox{B}_\mathrm{N}} </tex>
|'''0'''-ой '''1'''-ый ... '''n'''-ный биты второго слагаемого или (вычитаемого.)
!<tex> \large B</tex>
|-
!<tex> \mathbf {\mbox{S}_\mathrm{0} , \mbox{S}_\mathrm{1}, \dots, \mbox{S}_\mathrm{N}} </tex>
|'''0'''-ой '''1'''-ый ... '''n'''-ный биты ответа.
!<tex> \large S = A \pm B</tex>
|-
!<tex> \mathbf {T} </tex>
|бит , отвечающий за знак операции
'''T''' подключён к '''C<small>0</small>'''
|<center>'''0''' если <tex> \large S = A + B</tex><br />'''1''' если <tex> \large S = A - B</tex></center>
|-
!<tex> \mathbf {0 , 1, \dots, N } </tex>|[[Сумматор|блоки]] [[Каскадный сумматор|каскадного]] или [[Двоичный каскадный сумматор|двоичного каскадного]] сумматора полные сумматоры
|[[Файл:Full_Adder.png|250px|Блок сумматор]]
|-
!<tex> \mathbf {\mbox{C}_\mathrm{0}} </tex>
|Изначально ненужный бит в сумматоре,
однако он [[Реализация вычитания сумматором#Оптимизация|полезен при вычитании]].
|
В последующих блоках
в бит переноса подаётся
старший разряд
предыдущего суммирования.
|}
|[[Файл:Arithmometer_SUM_SUB.png|400px|Арифмометр]]
*[[Реализация_булевой_функции_схемой_из_функциональных_элементов|Реализация булевой функции схемой из функциональных элементов]]
==СсылкиИсточники информации==
*[http://en.wikipedia.org/wiki/Subtractor Subtractor]
*[http://www.play-hookey.com/digital/binary_subtraction.html Negative Numbers and Binary Subtraction]
1632
правки

Навигация