可能你不知道置媳,計(jì)算機(jī)的世界做的唯一工作就是做加法計(jì)算。
先來回顧一下在進(jìn)行十進(jìn)制加法的步驟公条。比如讓245和673相加拇囊,會把這個(gè)問題分解為幾個(gè)簡單步驟,每個(gè)步驟只需要將兩個(gè)十進(jìn)制數(shù)相加赃份。比如先把5和3相加寂拆,小時(shí)候背過的加法表就是解決這個(gè)問題奢米。
二進(jìn)制不同于十進(jìn)制的地方在于二進(jìn)制相加的情況更加簡單抓韩,情況更少。如下表:
為了保持一致鬓长,使得每個(gè)結(jié)果都是兩位數(shù)谒拴。改進(jìn)如下:
然后進(jìn)行分析。發(fā)現(xiàn)二進(jìn)制相加中涉波,其中一位叫做加法位英上,另一個(gè)叫進(jìn)位位。
加法位:
進(jìn)位位(和與門的輸出結(jié)果一樣):
看到這個(gè)結(jié)果是否產(chǎn)生了什么聯(lián)想啤覆。和上一篇講的真值表苍日,邏輯門似乎有些相似。
其實(shí)在二進(jìn)制加法中窗声,加法和進(jìn)位是分別進(jìn)行的相恃。運(yùn)算過程和十進(jìn)制加法一樣。將數(shù)字串從右往左一次逐漸相加進(jìn)位笨觅。
接下來以一個(gè)加法長度為8位的簡單加法器為例子拦耐。也就是我們要加的二進(jìn)制數(shù)耕腾,范圍是0000 0000 到1111 11111。相加和最大可以為1 1111 1110杀糯,十進(jìn)制為510.
輸入設(shè)備如下:
最上面一排是被加數(shù)扫俺,第二批是加數(shù)
最后代表輸出:這一排是燈泡(燈泡亮的代表1,不亮的代表0)固翰,注意這里為什么需要9個(gè)燈泡狼纬。因?yàn)閮蓚€(gè)八進(jìn)制相加結(jié)果可能為9位。
比如想要把0110 0101 和1011 0110相加骂际,表示及結(jié)果(1 0001 1011)如下
上面提到畸颅,利用與門可以計(jì)算出兩個(gè)二進(jìn)制加法的進(jìn)位。麻煩的是加法位這么弄方援。加法的真值表和或門及與非門有些相似没炒。
通過對比和明顯的想到幾者之間的關(guān)系。將或門和與非門輸出的結(jié)果和一個(gè)與門串聯(lián)就得到了加法位的真值表犯戏。圖如下:
在電學(xué)上有個(gè)專門的符號表示這個(gè)電路送火,叫異或門。
類型 | 電路圖 | 符號 | 說明 | 真值表 |
---|---|---|---|---|
異或門(XOR) | 只有當(dāng)其中一個(gè)輸入為1才輸出1 |
至此先匪,我們已經(jīng)得到兩個(gè)二進(jìn)制數(shù)相加的結(jié)果由異或門的輸出給出种吸,進(jìn)位位由與門的輸出給出。于是將異或門和與門連在一起計(jì)算二進(jìn)制數(shù)的和
同樣也有簡化的符號圖(半加器)
半加器意思就是沒有加完呀非,因?yàn)檫@個(gè)電路圖還沒實(shí)現(xiàn)進(jìn)位的功能坚俗。
常規(guī)來講兩個(gè)二進(jìn)制相加,半加器只能用于最右邊的一列岸裙。如果存在進(jìn)位猖败,從右邊算起的第二列,實(shí)際上需要三個(gè)二進(jìn)制位相加降允。對于三個(gè)二進(jìn)制位相加恩闻,需要將兩個(gè)個(gè)半加器和一個(gè)或門連接。
工作原理:從最左邊第一個(gè)半加器輸入A剧董、B幢尚。會產(chǎn)生一個(gè)加法位和進(jìn)位位。加法位必須和前一列的進(jìn)位位相加翅楼。然后在把他們輸入到第二個(gè)半加器中尉剩。第二個(gè)半加器輸出的加法為是最后的結(jié)果。兩個(gè)半加器的進(jìn)位輸出又被輸入到一個(gè)或門中毅臊。為什么這里用或門理茎,本來應(yīng)該一個(gè)半加器的。因?yàn)閮蓚€(gè)半加器的進(jìn)位輸出不可能會同時(shí)為1(比如這里如果A和B相加進(jìn)位1,則此時(shí)加法位必定為0功蜓,第二個(gè)半加器中B已經(jīng)為0了园爷,不可能再次進(jìn)位),所以或門在這里就已經(jīng)夠了式撼。因?yàn)榛蜷T和異或門的區(qū)別僅僅在輸入都為1的時(shí)候才不同童社。
同樣用符號代替上面的圖
現(xiàn)在講前面提到的電路連起來。首先將最右端的兩個(gè)開關(guān)和最右端的一個(gè)燈泡連在全加器上著隆。最右端沒有進(jìn)位輸入扰楼,所以用接地代替,輸入為0美浦。
接下來第二列及剩下的弦赖。第一個(gè)全加器的進(jìn)位輸出就是第二個(gè)全加器的進(jìn)位輸入。
注意浦辨,第8個(gè)燈泡和最后一對開關(guān)要以如下方式接在全加器上蹬竖,有進(jìn)位的情況,最后一個(gè)進(jìn)位輸出到第9個(gè)燈泡上流酬。
匯總一下币厕,這圖,這邏輯很漂亮芽腾。8個(gè)全加器連在一起旦装,每個(gè)全加器的進(jìn)位輸出都作為下一個(gè)全加器的進(jìn)位輸入。
簡單表示如下:
另一種簡單表示:
擴(kuò)展到16位二進(jìn)制加法器摊滔,也就是把兩個(gè)8位二進(jìn)制加法器級聯(lián)在一起阴绢。以此類圖什么24,32位加法器艰躺。這是自己編的呻袭。原理也一樣。注意第一個(gè)描滔、中間連接點(diǎn)棒妨、最后一個(gè).
至此,可以說是把計(jì)算機(jī)最為基礎(chǔ)的加法介紹完了含长。當(dāng)然這種加法器是上古時(shí)代的加法器。通過上面的分析伏穆,加法器的總體速度取決于數(shù)字的位位乘以全加器器件的速度拘泞。到后來有一種超前進(jìn)位加法器(carry look ahead adder),它是對普通的全加器進(jìn)行改良而設(shè)計(jì)成的并行加法器枕扫,主要是針對普通全加器串聯(lián)時(shí)互相進(jìn)位產(chǎn)生的延遲進(jìn)行了改良陪腌。超前進(jìn)位加法器是通過增加了一個(gè)不是十分復(fù)雜的邏輯電路來做到這點(diǎn)的。