一個簡單的二進制加法如下:
+ | 0 | 1 |
0 | 00 | 01 |
1 | 01 | 10 |
我們現在需要把它的結果分為兩位,一個是加法位,一個是進位位。分別如下
+加法位 | 0 | 1 |
0 | 0 | 1 |
1 | 1 | 0 |
+進位位 | 0 | 1 |
0 | 0 | 0 |
1 | 0 | 1 |
進位位的邏輯跟我們上一章介紹的邏輯與門一樣,這就很好辦了。
加法位跟或門邏輯較相似,除了右下角的0邏輯不一樣。也跟與非門較相似,除了左上角的0的邏輯不一樣。我們把它們組合下
現在的輸入輸出情況如下:
輸入A |
輸入B | 或門輸出 | 與非門輸出 | 想要的結果 |
0 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 1 | 1 |
1 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 0 | 0 |
從結果中看出,可以把或門和與非門輸出進行與門邏輯組合,就得到了我們的加法位的正確輸出結果
這種組合就叫做異或門。
現在我們加法的加法位和進位位都可以用電路來表示了,現在組合成的加法器如下:
這種組合就滿足了我們對一位二進制的加法的需求,下面我們用下面這種簡單的表達方式表達上面的加法器,比較簡單明了:
為什么叫半加器呢,因為目前位置它只能計算一位的加法,而大多數情況下,我們需要計算多位的二進制加法,它現在還不成熟。
多位加法中,除了第一位,后面每一位的加法都可能跟前面1位的的進1數進行相加。因此除了計算它本身的加法外,還要跟進位進行相加。我們現在把邏輯組合如下
現在我們可以得出一個完整的二進制加法中任意一位的邏輯了。既然它成熟了,我們可以把它叫做全加器了。如下:
一個全加器就完成了。
每個全加器的進位輸出都是都是后面一位的進位輸入,一個串一個,第一個加法的進位輸入為0.最后一個進位輸出,判斷有沒溢出。
以8位為單位,我們也可以做16位加法,只要兩個8位相連就可以了。
每個與門,或門,與非門都需要兩個繼電器。一個異或門需要6個繼電器,一個半加器由一個異或門和一個與門組成,那就是8個繼電器。每個全加器由兩個半加器和一個或門組成,所以需要18個繼電器。而我們計算一個經常使用的8位加法的時候,我們就需要144個繼電器。