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