硬件03:二進制減法器


在減法中沒有進位,而有借位,這是一種完全不同的機制。

要完成的減法器控制面板如下:

當總開關向下的時候代表執行減法,開關代表數據,燈泡帶結果,如果最左邊的第9個燈泡發光代表結果是負數。

消除借位

借位很復雜,但是我們可以避免出現借位。

以十進制為例,如計算253-176,可以將計算簡化為:
$$
253+(999-176)+1-1000
$$
這樣就不會產生任何的借位了。

如果是減數大於被減數的情況,如176-253,可以將計算結果簡化為:
$$
(999-253)+176-999
$$
這里的最后一步922-999本質上也沒有出現借位,只是結果是負數而已。

二進制的減法的技巧與十進制的相同。

完成減法

在簡化計算方法中一個常見的運算是用全1的二進制數減去減數,結果相當於對減數每位都取反。取反可以簡單的給每個位加上一個反向器來解決,但是新的機器要求既能做加法又能做減法,所以需要一個靈活切換的機制,下列電路可以實現:

在這個電路中,取反的信號會被傳遞到每一個異或門中,然后輸出。當取反的信號是0,輸入是01100001,那么輸出就不變,還是01100001,因為0和任何數異或結果都是那個數。如果取反的信號是1,那么輸出則會被反置為10011110.

這個電路可以被簡化為如下符號,它被稱為求補器:

再進一步,就可以組成新的能做減法的機器:

這個電路是由一個8位二進制加法器和一個異或門連接起來的,SUB信號代表加減法轉換開關,當SUB為0時代表加法,為1代表減法。在減法中,首先通過求補電路將減數取反,而且進位輸入1使得結果加1,如果加1后產生進位,此時說明A-B等於正數,不產生下溢。

上面這個部件還不能表示結果是負數,只能在正數時出現正確結果,因為如果是負數的話,還需要在輸出端再經過一次取反才行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM