日常生活中有很多涉及到邏輯運(yùn)算的地方,例如“如果這個(gè)周末天氣好,我們也有空,就會(huì)去郊游”,這句話里就有邏輯運(yùn)算,“周末天氣是否好”、“我們是否有空”這是二個(gè)條件,只有當(dāng)二個(gè)條件都滿足時(shí),“是否去郊游”這個(gè)結(jié)果才是肯定的,如果有一個(gè)條件不滿足,郊游就泡湯了。很明顯,這個(gè)邏輯與之前介紹的與門電路非常像,所以用門電路非常適合做邏輯運(yùn)算,換句話說(shuō)CPU不僅能做算術(shù)運(yùn)算,邏輯運(yùn)算更是它的拿手好戲。例如“判斷一個(gè)數(shù)字是否是負(fù)數(shù)”、“判斷所有輸入是否為0”等等。
下面這個(gè)電路就可以判斷所有輸入A1-A8是否都是0,只有全部是0,最終輸出才是1,否則輸出就是0。
目前為止,我們將晶體管開(kāi)關(guān)進(jìn)行巧妙的組合,已經(jīng)能夠?qū)崿F(xiàn)算術(shù)運(yùn)算、邏輯運(yùn)算了,按照慣例,我們將這樣一堆電路進(jìn)行封裝,簡(jiǎn)化為一個(gè)符號(hào),它被稱為算術(shù)邏輯單元(或運(yùn)算單元),簡(jiǎn)稱ALU。
它具有二個(gè)8位二進(jìn)制作為輸入信號(hào),同時(shí)還要告訴它做什么運(yùn)算(加、減……),所以我們用一個(gè)4位二進(jìn)制表示操作運(yùn)算符(例如1000代表加法,1100代表減法……),輸出結(jié)果也是8位二進(jìn)制。與此同時(shí),ALU還要輸出一些標(biāo)記,這些標(biāo)記只有1位二進(jìn)制,代表某種狀態(tài)。例如如果輸出結(jié)果為0,是否為0標(biāo)志位就是1,如果輸出結(jié)果為負(fù)數(shù),是否負(fù)數(shù)標(biāo)志位就是1,如果運(yùn)算出現(xiàn)溢出(進(jìn)位產(chǎn)生的),溢出標(biāo)志位就是1。
至此我們已經(jīng)創(chuàng)建了CPU的核心之一ALU,接下來(lái)我們還會(huì)了解計(jì)算機(jī)是如何存儲(chǔ)數(shù)據(jù)的,最后我們會(huì)完整搭建一顆CPU!