閱讀本文需提前學(xué)習(xí)《編碼---隱匿在計算機軟硬件背后的語言》前十一章
關(guān)于本書中各種邏輯門的知識匯總?cè)鐖D:
加法計算是計算機唯一要做的工作欢伏,通過加法我們可以實現(xiàn)減法逾礁、乘法和除法递惋。
二進制的加法可以表示如下:
0+0的進位是0,加法位0
0+1的進位是0佑惠,加法位1
1+1的進位是1朋腋,加法位0
我們想用電路來表示加法,顯而易見地可以用邏輯門來表示膜楷。
不難發(fā)現(xiàn)旭咽,二進制加法的進位操作和與門的結(jié)果一致,因此可以用與門來表示把将。但加法位相對來說有點復(fù)雜轻专,二進制的加法位如下表:
+加法 | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 0 |
我們想要的結(jié)果是0、1察蹲、1、0(從左到右催训,從上到下)
經(jīng)過對比后可以發(fā)現(xiàn)洽议,常用的幾個邏輯門中并沒有和上表結(jié)果一樣的,但是有兩個邏輯門與上表結(jié)果十分相似漫拭。它們是或門和與非門亚兄,其中或門和上表結(jié)果相似,除了右下角的結(jié)果采驻。而與非門則是左上角不一樣审胚。
OR | 0(a) | 1(b) |
---|---|---|
0(c) | 0 | 1 |
1(d) | 1 | 1 |
NAND | 0(a) | 1(b) |
---|---|---|
0(c) | 1 | 1 |
1(d) | 1 | 0 |
表中a、b礼旅、c膳叨、d四個點代表輸入,將上述兩表中同位置的輸出做“與”運算痘系,發(fā)現(xiàn)得到的結(jié)果就是0菲嘴、1、1、0龄坪。那么將一個或門和一個與非門連接到相同的輸入上再連接一個與門就可以完成加法位的運算昭雌。上述的門就叫異或門,其功能就是當(dāng)輸入相同時輸出0健田,輸入不同時輸出1烛卧。異或門如下圖所示:
可以簡寫為:
我們將一個與門和一個異或門連在一起就可以完成我們的進位和加法位的運算,如下圖所示:
我們再來看另外一個問題妓局,二進制加法11+11总放,最右位兩個1加完后有一個進位1,所以在中間位上其實是3個1相加跟磨。而上圖因為只有兩個輸入所以沒有將前一位的進位納入這一次的運算间聊,所以它又叫半加器。意思就是它沒有辦法進行1+1+1的運算抵拘,簡寫如下圖:
為了對三個二進制數(shù)進行加法運算哎榴,我們可以做下圖的連接:
想下11+11運算,當(dāng)最右邊兩個1相加后僵蛛,產(chǎn)生1個進位“1”尚蝌,兩個11左邊的“1”相加后再與進位“1”相加,體現(xiàn)在圖中就是最左側(cè)的“進位輸入”+“輸入A”+“輸入B”充尉,最左邊位兩個1相加(輸入A+輸入B)的結(jié)果與進位輸入“1”再次通過一個半加器相加飘言,其“和”單獨作為加和輸出,而進位再與最左邊的“1+1”的進位做“與”運算產(chǎn)生進位輸出驼侠。就可以完成一個有進位的二進制運算(即三個二進制數(shù)相加)姿鸿。這個“門”我們成為“全加器”〉乖矗可以簡寫如下:
現(xiàn)在我們可以組建一個如下圖的加法器:
首先將最右端的兩個開關(guān)和下面的一個燈泡連接到一個全加器上苛预。因為最右端肯定是沒有進位的,所以可以將最右端的進位輸入接地笋熬,如下圖:
對于加法器左邊第二列的進位輸入就是第一列的進位輸出热某,依次接8個全加器即可完成一個8位的二進制加法器。這里需要注意的是最后一個全加器應(yīng)該接兩個燈泡胳螟,其中一個是加和昔馋,另個是進位,如下圖所示:
最后一個進位輸出被連接到第9個燈泡上糖耸。
至此秘遏,一個二進制加法器完成。
參加資料:編碼:隱匿在計算機軟硬件背后的語言