一個(gè)故事講完CPU的工作原理

上二年級(jí)的小明正坐在教室里■現(xiàn)在是數(shù)學(xué)課,下午第一節(jié)凭峡,窗外的蟬鳴拙已、緩緩旋轉(zhuǎn)的吊扇讓同學(xué)們昏昏欲睡。此時(shí)摧冀,劉老師在黑板上寫下一個(gè)問題:

6324 + 244675 = 倍踪?

小明抬頭看了一眼,覺得這兩個(gè)數(shù)字挺眼熟索昂。他昨天翹課去網(wǎng)吧了建车,因此錯(cuò)過了劉老師講的豎式計(jì)算加法。

“同學(xué)們算一算這道題楼镐。”劉老師和藹可親地說道往枷。

小明盯著黑板懵逼框产。

小學(xué)二年級(jí)的他面對這樣一道世界級(jí)難題,束手無策错洁。小明伸出了自己的左手秉宿,打算用一個(gè)古老而深邃的方法--掰手指--嘗試一下。

小明發(fā)現(xiàn)他的每只手只能輸入0-5中的正整數(shù)屯碴,和的范圍僅限于0-10描睦,離6324還十分遙遠(yuǎn)。

“慢著导而!”小明看向了自己的左手忱叭。他發(fā)現(xiàn)隔崎,事情有一點(diǎn)不對勁令蛉。

我們也來看看小明的左手蕴纳。這只左手有5根手指,我們把5根手指都伸開來記為11111守谓,5根手指握拳記為00000撵彻,手背面向我們钓株,左手小指是第一個(gè)1/0。

小明緊緊地握拳陌僵,然后伸出大拇指轴合,此時(shí)的左手為00001⊥攵蹋“如果受葛,”小明想,“這樣是1”豪椿。

他縮回拇指奔坟,伸出食指,此時(shí)的左手為00010搭盾;“這樣是2”咳秉。

他又伸出拇指,此時(shí)的左手為00011鸯隅;“那么這樣是3”澜建。

他縮回拇指和食指,伸出中指蝌以,此時(shí)的左手為對著自己豎中指00100炕舵;“這樣就是4!”

.....小明的左手飛速運(yùn)動(dòng)著跟畅,直到五根手指都伸直咽筋,像是鋼鐵俠射了一發(fā)掌心炮11111;“這樣就是31徊件!一只手可以表示0-31中的任意正整數(shù)奸攻!”

小明為自己的發(fā)現(xiàn)感到激動(dòng)∈郏可他不知道怎么表示加法睹耐。

小明的同桌,英語課代表小紅部翘,看他擺弄了半天左手硝训,忍不住問他在干什么。小明解釋了他的發(fā)現(xiàn)。小紅聽了小明的一番高論窖梁,若有所思赘风,提筆在數(shù)學(xué)書的封底畫了一個(gè)表格:

小紅畫的表格

“如果我們能造一個(gè)機(jī)器,給它三個(gè)輸入窄绒,它能返回兩個(gè)結(jié)果贝次,那我們就能算出這道題!”小紅激動(dòng)地說彰导。

“啥叫進(jìn)位啊美女蛔翅?”小明問道。

“就是你列豎式的時(shí)候畫的一小撇”位谋,小紅回答山析。

“獵術(shù)士是什么,我知道獵魔人和古爾丹掏父∷窆欤”

小紅于是講解了一下怎么列豎式計(jì)算十進(jìn)制加法∩奘纾“我懂了爵政。”

小明說著陶缺,拿過小紅的數(shù)學(xué)書钾挟,補(bǔ)全了表格:

小明試著補(bǔ)全表格

“是這樣嗎?”小明問小紅饱岸。

小紅拿過來看了看掺出,說:“最后一行寫錯(cuò)了,輸出結(jié)果應(yīng)該是1苫费。你想啊汤锨,1+1+1應(yīng)該等于11,左邊這一位是輸出進(jìn)位百框,右邊這一位是輸出結(jié)果闲礼,都是1,所以輸出結(jié)果應(yīng)該是1铐维〖碓螅”

“噢》阶担”小明又拿過書來聂抢,拿起橡皮鉛筆改正:

小明改好了

“那為什么這個(gè)機(jī)器能算加法钧嘶?我還是不懂棠众。”小明問。

“假設(shè)我們已經(jīng)造出來了這么個(gè)機(jī)器闸拿,長這樣”小紅繼續(xù)在封底上畫著:

小紅畫的機(jī)器

“等會(huì)等會(huì)空盼,怎么變成英文了,我英語不好新荤±恐海”小明叫道。

“hmmm看來你沒讀雙語幼兒園苛骨。左邊這三個(gè)是輸入篱瞎,右邊是輸出,C是進(jìn)位痒芝,C-in是輸入進(jìn)位俐筋,C-out是輸出進(jìn)位,Sum是和的意思严衬,明白了么澄者?”小紅解釋道。

“噢好请琳×坏玻”

“假設(shè)我們已經(jīng)造出來了這么個(gè)機(jī)器,造了好幾個(gè)俄精,我們這么連起來...誒紙不夠大询筏,我寫不下了∴值梗”

小明一聽屈留,趕緊從書桌膛里翻出來一本草稿紙,生怕同桌變成費(fèi)馬测蘑。

“謝謝灌危。先這么連起來:”

小紅畫圖中

“哦哦哦我懂了,A和B就是兩只手碳胳,最右邊這個(gè)one-bit-adder計(jì)算的是最小位數(shù)的和勇蝙!”小明說道。

“正確挨约!”

“你這樣連的話味混,是說最小位的輸出進(jìn)位就是下一位的輸入進(jìn)位,下一位的輸出又是下下一位的輸入诫惭!天啊翁锡,這跟列豎式好像∠ν粒”小明驚叫馆衔。

“Absolutely!”小紅回答道瘟判。

小明又拿過草稿紙,接著畫起來:

小明畫圖中

“把對應(yīng)的每一位連到每一個(gè)adder里...”小明念念有詞角溃,“...再匯總一下輸出”:

小明畫的加法器

“成了拷获!這個(gè)東西可以算兩只手加法的結(jié)果!”小明高興極了减细。

“可是離6324和244675還是太遠(yuǎn)了匆瓜,輸入5位遠(yuǎn)遠(yuǎn)不夠呀∥打颍”小紅皺了皺眉頭驮吱。

“不不不!你在掰手指的時(shí)候有沒有發(fā)現(xiàn)萧吠,每多一根指頭糠馆,能表示的數(shù)就會(huì)多出來一大堆,我覺得只要加那么十幾個(gè)就夠了怎憋!1根指頭能表示2個(gè)數(shù)(0又碌,1),2根指頭四個(gè)數(shù)(0绊袋,1毕匀,2,3)癌别,3根8個(gè)...”

“是2的倍數(shù)皂岔!”小紅接道,“小明展姐,我覺得你的這個(gè)記數(shù)方法很有意思躁垛,要不叫小明式吧!”小紅凝望小明的目光中有了一絲羞澀圾笨。

“二進(jìn)制教馆。”

身后忽然傳來低沉的聲音擂达。兩人同時(shí)回頭土铺,發(fā)現(xiàn)數(shù)學(xué)課代表小剛正直勾勾地盯著那張草稿紙。他好像已聆聽多時(shí)了板鬓。

“叫二進(jìn)制吧悲敷,我看藍(lán)貓?zhí)詺馊栔v過這個(gè),一模一樣俭令,藍(lán)貓說這是二進(jìn)制后德。”小剛補(bǔ)充道抄腔。

小剛的數(shù)學(xué)成績是班里最好的瓢湃,一進(jìn)學(xué)而思就上的超常班窟赏。小紅只能上尖子班,小明一般去網(wǎng)吧箱季。

“那就叫二進(jìn)制吧」髌”小明說藏雏。

他和小紅轉(zhuǎn)過身來,老師讓小組討論的時(shí)候他們就這么坐作煌。

小剛又道:“可是掘殴,怎么造出這個(gè)one-bit-adder呢?”他的眉頭皺成一團(tuán)粟誓,眼鏡片看起來更厚了奏寨。

小明和小紅也陷入了沉默,三人一籌莫展鹰服,陷入僵局病瞳。這時(shí),小剛的同桌悲酷,物理課代表小蘭入局套菜。

她忽然說道:“我聽物理辦公室的陳老師吹牛,他當(dāng)年在大學(xué)里讀電子工程设易,GPA一直是4.3逗柴,用實(shí)驗(yàn)室的導(dǎo)線開關(guān)和小燈泡就能造一個(gè)32位的加法器,不知道是怎么做到的顿肺。他還說什么與門是and戏溺,或門是or,再加一個(gè)非門not屠尊,用它們表示邏輯旷祸,就能造出世間千千萬萬的計(jì)算機(jī)∷侠ィ”

小明聽迷糊了肋僧,“等會(huì)等會(huì),什么門控淡?金拱門嫌吠?”另兩人也露出迷茫的表情。

小蘭從桌子里掏出一個(gè)黑盒子掺炭”枳纾“這是下節(jié)課要用的教具,陳老師讓我先拿著涧狮】话”

她打開盒子么夫,取出三個(gè)零件和一個(gè)說明書。

“喏肤视,你們看看這個(gè)”档痪,她拿起第一個(gè)零件,“這個(gè)叫與門邢滑,有兩個(gè)輸入和一個(gè)輸出腐螟。如果我們把輸出連上小燈泡,接上電源困后,兩個(gè)輸入分別連上開關(guān)乐纸,那么是這么個(gè)情況:”

小蘭畫的表格

“就是說,只有兩個(gè)開關(guān)都閉合了摇予,小燈泡才亮汽绢,有點(diǎn)像串聯(lián)電路〔啻鳎”小蘭補(bǔ)充道宁昭。

“誒,有意思了...”小剛扶了扶眼鏡酗宋,似乎打算說什么久窟,大家都看向他。

“沒本缠,沒什么斥扛,我還在想,小蘭你接著說丹锹∠“洌”

“那好¢故颍”小蘭接著拿起第二塊零件匾灶。“這個(gè)叫或門租漂,有一個(gè)開關(guān)開著燈泡就會(huì)亮...”

“等下阶女!”小剛忽然打斷,拿起筆在自己的白紙上畫起來:

小剛畫的表格

“是不是這樣哩治!”小剛激動(dòng)地說秃踩,“如果0是關(guān)1是開,0是滅1是亮的話业筏,或門的輸入輸出是不是這樣憔杨?”

小蘭看了看道:“正是”。

她拿起第三個(gè)零件蒜胖,“最后這個(gè)叫非門消别,只有一個(gè)輸入抛蚤,一個(gè)輸出。它會(huì)輸出一個(gè)相反的結(jié)果:輸入有電流寻狂,輸出就沒有岁经;輸入沒有電流,輸出就有電流蛇券。用小剛的話來說缀壤,輸入0輸出則為1,輸入1輸出則為0怀读。太簡單了,懶得畫表了骑脱〔思希”

小蘭把非門放在桌上。小剛說道:“這三個(gè)門可以表示三種邏輯叁丧。如果A啤誊、B是輸入,? A or B 就是經(jīng)過或門的結(jié)果拥娄,? A and B就是經(jīng)過與門的結(jié)果蚊锹,? not A 則是A經(jīng)過非門的結(jié)果≈神”

三人紛紛點(diǎn)頭牡昆。“可是摊欠,這和加法有什么關(guān)系呢丢烘?”小明問道。

四人再度陷入沉默些椒。

沉默播瞳。

忽然,小明拿起筆免糕,一邊畫一邊說道:“如果我們回去看小紅畫的表格赢乓,”

左三列是輸入,右二列是輸出

“Sum可以寫成A石窑、B牌芋、Cin的邏輯關(guān)系!”

“你們看松逊,把 A and B 記作 AB姜贡,A or B 記作 A + B,not A 記作 A 上面畫個(gè)橫線棺棵。Sum 輸出為1只出現(xiàn)在表格的2楼咳、3熄捍、5、8行母怜,也就是三個(gè)輸入中1的個(gè)數(shù)為奇數(shù)的時(shí)候余耽。我們把這4種情況記下來,那么這個(gè)式子...”

“可以拿邏輯門實(shí)現(xiàn)F谎5帧!”四人異口同聲的叫道轨域。

小紅搶過草稿紙袱耽,又看了看物理教具的說明書,邊畫邊說了起來:“說明書上寫干发,這個(gè)火車頭形狀的符號(hào)表示 and gate朱巨;這個(gè)B2轟炸機(jī)形狀的是or gate;這個(gè)小人形狀的是not gate...”

小紅畫的與門枉长,或門冀续,非門

她又看了一眼小明的式子,說道:“這個(gè)式子的第一項(xiàng)可以這樣...”

小紅畫的輸出和的第一項(xiàng)

"你們看你們看必峰,這個(gè)不就是

嘛洪唐!"小紅自豪地說。

小明補(bǔ)全了電路:

“先把與門都畫了”

“再把或門都加上吼蚁,搞定凭需。這東西可以算出Sum了,接下來用一樣的辦法把C-out弄出來肝匆」ε冢”小明準(zhǔn)備繼續(xù)畫。

“你們看术唬,這里還有幾個(gè)零件薪伏。”小蘭指著說明書說道:

與非粗仓,或非嫁怀,異或,同或

“與非門:一個(gè)與門的輸出和一個(gè)非門相連借浊,英文是not and塘淑,NAND gate。那個(gè)小圈圈代表一個(gè)非門蚂斤。

或非門是或門 + 非門存捺,not or,NOR gate。

第三個(gè)叫異或門捌治,只有兩個(gè)輸入中一個(gè)為1一個(gè)不為1時(shí)岗钩,才會(huì)輸出1,exclusive-or肖油,XOR gate兼吓。

第四個(gè)是同或門,也就是一個(gè)異或門加上一個(gè)非門森枪∈硬”

“啊哈!”小剛靈機(jī)一動(dòng)县袱,抓起筆來道:“我有一個(gè)絕妙的點(diǎn)子浑娜。”

小剛簡化后的電路

“小明的方案式散,要用17個(gè)門筋遭。我只要2個(gè)異或門就搞定了,牛逼吧杂数?”

三人瞪大了眼睛宛畦,仔細(xì)思考后紛紛點(diǎn)頭道:“牛逼瘸洛,牛逼揍移。”

小剛隨即畫出了完整的one-bit-adder電路:

小剛的one-bit-adder

小明從從教具盒里拿出電源反肋、小燈泡那伐、開關(guān)和邏輯門,按照設(shè)計(jì)圖制作出了全加器:

看到小剛的設(shè)計(jì)被完整的實(shí)現(xiàn)石蔗,小明欣喜:“啊哈哈哈罕邀,吾有上將小剛,則霸業(yè)可成养距,漢室可興八咛健!”

他把黑盒子里的零件全拿了出來棍厌,四人忙碌地工作著肾胯。很快,他們擁有了5個(gè)全加器耘纱,基于小紅的設(shè)計(jì)連了起來:

小紅設(shè)計(jì)實(shí)現(xiàn)

“二進(jìn)制的01100等于十進(jìn)制的12敬肚,01010等于10,12+10=22束析,等于16+4+2艳馒,也就是二進(jìn)制的10110...”

四人人往代表輸出結(jié)果的5個(gè)小燈泡望去:亮,滅员寇,亮弄慰,亮第美,滅;正是10110曹动!

“成了U铡!墓陈!”

大家激動(dòng)的拍打課桌為了計(jì)算黑板上那道題恶守,四人一共制作了32個(gè)一位全加器,將它們連接后贡必,一個(gè)三十二位加法器便誕生了兔港。

他們歷經(jīng)艱辛,踩著自然規(guī)律和人類智慧的肩膀仔拟,把自己從枯燥的加法計(jì)算中解放出來衫樊!

窗外的蟬鳴漸漸平息,頭頂?shù)牡跎炔辉俎D(zhuǎn)動(dòng)利花。

“劉老師科侈,答案是250999!”小明站了起來炒事,聲若洪鐘大呂臀栈,震懾天地。

他和小紅挠乳、小剛权薯、小蘭分別對視了一眼,收獲了堅(jiān)定的目光睡扬。

這目光盟蚣,連同面前的32位加法器,如同新的轉(zhuǎn)機(jī)和閃閃星斗卖怜,正在綴滿沒有遮攔的天空屎开。

劉老師點(diǎn)了點(diǎn)頭,欣慰的說道:“很好马靠,看來四位同學(xué)對這部分知識(shí)掌握的不錯(cuò)奄抽!我們再來看幾道題!”

他轉(zhuǎn)過身虑粥,拿起板擦如孝,把黑板擦了個(gè)精光,又從黑板槽里拾起半截粉筆娩贷,寫了起來:?

1. 244675 - 6324 = 第晰??

2. 3.14159 + 5.535897 = ??

3. 17 * 45 = ??

4. 3 / 2 = 茁瘦?

一連四道題品抽,讓四人組陷入了深思:如何讓自己的機(jī)器運(yùn)算減法?乘法甜熔?除法圆恤?浮點(diǎn)數(shù)?

劉老師并沒有停下腔稀,手中的粉筆運(yùn)動(dòng)得越來越快:

5. Fibonacci 數(shù)列的第103項(xiàng)盆昙?

6. 一圈共有N個(gè)人,開始報(bào)數(shù)焊虏,報(bào)到M的人出列淡喜,然后重新開始報(bào)數(shù),問最后出列的人是誰诵闭?.

.....

疑惑越來越多了:如何存儲(chǔ)炼团?怎樣實(shí)現(xiàn)分支?保證效率疏尿?

劉老師仍未停下瘟芝,黑板快被寫滿了:

103. 方程ζ(s)=0的所有有意義的解都在一條直線上嗎?

104. 大于2的偶數(shù)都可以寫成兩個(gè)質(zhì)數(shù)的和嗎褥琐?

......

134. 生命锌俱,宇宙及所有事物的答案?

劉老師放下了粉筆踩衩,半截粉筆已經(jīng)變成硬幣的厚度嚼鹉。

“這些問題贩汉,我們能造個(gè)機(jī)器回答么驱富?”小明撐著頭,喃喃自語匹舞。

來自:知乎褐鸥,作者:柳兩叢?

鏈接:https://www.zhihu.com/question/40571490/answer/718942643

歡迎關(guān)注自媒體平臺(tái) “八戒程序猿”,我們一起分享更多教程干貨

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市赐稽,隨后出現(xiàn)的幾起案子叫榕,更是在濱河造成了極大的恐慌,老刑警劉巖姊舵,帶你破解...
    沈念sama閱讀 212,029評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晰绎,死亡現(xiàn)場離奇詭異,居然都是意外死亡括丁,警方通過查閱死者的電腦和手機(jī)荞下,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人尖昏,你說我怎么就攤上這事仰税。” “怎么了抽诉?”我有些...
    開封第一講書人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵陨簇,是天一觀的道長。 經(jīng)常有香客問我迹淌,道長河绽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任唉窃,我火速辦了婚禮葵姥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘句携。我一直安慰自己榔幸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開白布矮嫉。 她就那樣靜靜地躺著削咆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蠢笋。 梳的紋絲不亂的頭發(fā)上拨齐,一...
    開封第一講書人閱讀 49,850評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音昨寞,去河邊找鬼瞻惋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛援岩,可吹牛的內(nèi)容都是我干的歼狼。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼享怀,長吁一口氣:“原來是場噩夢啊……” “哼羽峰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起添瓷,我...
    開封第一講書人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬榮一對情侶失蹤梅屉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后鳞贷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坯汤,經(jīng)...
    沈念sama閱讀 44,207評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評(píng)論 2 327
  • 正文 我和宋清朗相戀三年搀愧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惰聂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凿滤。...
    茶點(diǎn)故事閱讀 38,683評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖庶近,靈堂內(nèi)的尸體忽然破棺而出翁脆,到底是詐尸還是另有隱情,我是刑警寧澤鼻种,帶...
    沈念sama閱讀 34,342評(píng)論 4 330
  • 正文 年R本政府宣布反番,位于F島的核電站,受9級(jí)特大地震影響叉钥,放射性物質(zhì)發(fā)生泄漏罢缸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評(píng)論 3 315
  • 文/蒙蒙 一投队、第九天 我趴在偏房一處隱蔽的房頂上張望枫疆。 院中可真熱鬧,春花似錦敷鸦、人聲如沸息楔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽值依。三九已至,卻和暖如春碟案,著一層夾襖步出監(jiān)牢的瞬間愿险,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評(píng)論 1 266
  • 我被黑心中介騙來泰國打工价说, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辆亏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,401評(píng)論 2 360
  • 正文 我出身青樓鳖目,卻偏偏與公主長得像扮叨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子疑苔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評(píng)論 2 349