二進制數的加法
先看一個1bit輸入的半加器:
其中,S是和,C_out是進位。從上圖可以發現,S = A XOR B, C_out = A AND B,因此,一個半加器實際上是由異或門和與門電路實現的。
一個全加器,就是一個半加器增加一個進位輸入,下面是一個1bit的全加器:
那么,如果要實現多bit數的加法,只需要用多個全加器即可,這樣的加法器叫做Ripple-Carry Adder:
上圖是一個32bit的Ripple-Carry Adder
二進制數的乘法
二進制數的乘法和十進制數的乘法,其基本原理是一樣的
如上圖所示,這兩種數制的乘法都是把被乘數和乘數的每一位分別相乘,然后將得到的乘積根據所乘的乘數的位數進行移位,比如,在十進制數乘法中,如果將被乘數與乘數的個位相乘,那就把得到的乘積向左移動0位;如果被乘數與乘數的十位相乘,那就把得到的乘積向左移動1位...移位操作完成后,最后將這些移位后的乘積相加,就是最開始這兩個被乘數與乘數的結果。
我們都知道,在二進制數中,只有數字0和1。在二進制數乘法中,如果與被乘數相乘的乘數的某一位為1,那結果就是被乘數本身,如果乘數的某一位為0,那此次的結果就是0。因此,二進制數乘法過程中的數次相乘,其實使用與門實現的。總結一句,二進制數乘法,是用與門與加法器實現的。
參考資料: 《數字設計和計算機體系結構》 David Money Harris, Sarah L. Harris