第四章 加法器

第四章 加法器

來自專欄 0與1的世界

加法計算的方法:從低位到高位,相同數位上的數相加,在加上低位進位的數,即為和的當前位的值。在任何一個數位上,都可看作三個一位數相加(沒有進位的可以看做進0)。

理解了二進位與其加法運算方法之後,接下來就要使用繼電器真正創造一個可以計算加法的機器-加法器。

這裡要特別提醒一下,因為是用燈泡來代表二進位數,一個燈泡代表二進位數中的一位,因為燈泡數量有限,設計加法器的時候,我們只能設計出有限位數的數(有限的燈泡)相加的加法器。

我們將設計一個八位的加法器(輸入的二進位數最大是八位)。

讓我們細細回想兩個二進位數相加到底是如何計算出結果的?

在任何一個數位上,都可看作三個一位數相加(沒有進位的可以看做進0)。

依照這一條,先設計一個能計算三個一位數相加的電路。能計算三個一位數相加的電路被稱作全加器。

從低位到高位,相同數位上的數相加,在加上低位進位的數,即為和的當前位的值。

依照這一條,則可以計算和的各個數位上的值,把用全加器計算出來的各個數位上的值組合起來,即是和的值,這個電路也被叫做加法器了。

全加器的設計思路

三個二進位一位數相加,所以輸入為三個開關。

三個二進位的一位數相加,和最大為1+1+1=11(二進位),所以輸出為兩個燈泡。

所以全加器的示意圖應當是下面這樣的。中間的電路圖就是我們需要尋找的。

開關與燈泡的映射關係(輸入與輸出的對應關係列表),被叫做真值表。

為了滿足A+B+C=D2D1的關係,全加器的真值表應當滿足:

開關A 開關B 開關C D2燈泡(高位) D1燈泡(低位)

0 0 0 0 0(A+B+C=D2D1 => 0+0+0=00 => 0+0+0=0)

0 0 1 0 1(A+B+C=D2D1 => 0+0+1=01 => 0+0+0=1)

0 1 0 0 1(A+B+C=D2D1 => 0+1+0=01 => 0+1+0=1)

0 1 1 1 0(A+B+C=D2D1 => 0+1+1=10 => 0+1+1=2)

1 0 0 0 1(A+B+C=D2D1 => 1+0+0=01 => 1+0+0=1)

1 0 1 1 0(A+B+C=D2D1 => 1+0+1=10 => 1+0+1=2)

1 1 0 1 0(A+B+C=D2D1 => 1+1+0=10 => 1+1+0=2)

1 1 1 1 1(A+B+C=D2D1 => 1+1+1=11 => 1+1+1=3)

連接八個全加器稱為一個八位加法器。

如果我們只關心八位加法器的加法功能,不在意八位加法器的內部結構,則可以把八位加法器抽象成

全加器設計

三個一位數相加在計算時,又是先計算兩個一位數相加,然後在加上第三個一位數。

所以設計全加器的時候,可以先設計能計算兩個一位數相加的"半加器",然後用這個半加器再加上低一位的進位,組成全加器。

半加器

兩個一位數相加,所以輸入為兩個開關。

兩個二進位的一位數相加,和最大為1+1=10,所以輸出為兩個燈泡。

所以全加器的示意圖應當是下面這樣的。中間的電路圖就是我們需要尋找的。

全加器電路

至此,設計一個加法器,現在已經簡化成求待求電路一、待求電路二、待求電路三的電路!三個電路的真值表在先前的步驟中也已經推導出來了,那麼根據真值表怎麼設計電路?電路中有一些基本電路,猶如九九乘法表一樣,屬於應當知道的,不需要單獨設計的。以上幾個電路即屬於這種情況。接下來我們將學習一些基礎電路。

常用的電路

與電路

與電路滿足待求電路一的真值表

抽象

或電路

或電路滿足待求電路三的真值表

抽象

非電路

抽象

一個與門,一個非門,按照圖示連在一起形成了一個最常見的運算,與非運算。

一個或門,一個與非門,一個與門,按照圖示連在一起形成了一個最常見的運算,異或運算。

異或電路滿足待求電路二的真值表

至此待求電路一、待求電路二、待求電路三已經全部求出,一個8位加法計算器所需要的電路已經出來了。設計完畢。

推薦閱讀:

如何判斷本地網路好壞?高帶寬等於低延遲嗎?
網工必備的四款軟體
網路層:路由器
塊存儲、文件存儲、對象存儲這三者的本質差別是什麼?
未來十年,人類還需要400億個感測器

TAG:計算機 | 計算機技術 | 計算機網路 |