娃娃問我“粑粑,計算機怎麼這麼厲害,它是怎麼知道1 1=2的呀,它也有大腦嗎?”我微微一笑,回答道“是啊,計算機有CPU處理器,它專門負責電腦的計算工作呀。”娃娃似懂非懂的點了點頭,若有所思的走開了。
是啊,我的回答并沒有錯,可是刨根問底,CPU又是怎麼工作的呢?它到底是怎麼計算1 1的呢,回想起當年學習的數字電路知識,我想有必要來揭開這層神秘的面紗,為大家科普一下計算機的計算原理,這個一定要從二進制計算說起。
什麼是二進制什麼是二進制呢?先得來回顧下我們都已經很熟悉的十進制,十進制數位一共由0-9十個數字來表示,它做加法的原理是數位相加,逢十進一,比如7 8=15,“15”中的“1”就是滿10進位所得。我們将這種思維模式衍生到二進制再來看,首先二進制隻有兩個數字0和1,如果要表示2以上的數字,則需要用更多位數的0、1數來表示。參考下圖。二進制它的加法也是數位相加,可是它沒有2以上的數字,所以一旦加法的結果超過2,就要進位,比如1 1就等于10了(0001 0001=0010)。下圖是十進制數字0-9對應的二進制的表示,其中的關鍵點就是要記住逢二進一。
十進制數字0-9的二進制對應表
對于二進制運算的理解,是理解計算機運算原理的關鍵。但是聰明的你肯定會問,既然我們平時都已經習慣了十進制運算了,為什麼計算機不能采用十進制運算,一定要用二進制呢?這個問題主要是由于計算機的硬件實現所決定的。
開關電路記得在介紹計算機曆史的時候曾今提過,組成早期計算機的基本元件是一種叫晶體管的電子元器件。這種器件有個特性,當在一個端口輸入高電壓或者低電壓的時候,它的輸出端也隻有高電壓或者低電壓,這其中的關鍵點是隻有高和低兩種狀态,沒有第三種狀态,這兩種狀态也叫開關狀态。聰明的朋友可能已經猜到,這好像和二進制隻有0和1兩個數字很相似啊,說的沒錯,計算機就是由這些晶體管組成,它們隻有開關兩種狀态,那使用隻有兩個數字0和1的二進制來做運算就是順理成章的事情了。
晶體管
順便提一下,我們平時了解的CPU,其實就是内部集成了上百萬甚至千萬的這種晶體管,然後通過各種晶體管組合控制輸入輸出的開關狀态而去進行各種運算。
加法器加法器是由晶體管組成的加法運算單元,它分為半加器和全加器,其中的區别就是半加器是不帶進位的,全加器帶有進位。我們先來看看1位全加器的原理:
見上圖,A、B代表輸入二進制位,S代表輸出,C代表進位。中間的模塊可以認為是由一些晶體管組成的電路(也叫門電路)。這個電路的運算結果可以由下表來表示,至此,計算機就完成了1位二進制的計算了。
那如果多位運算呢,很簡單,隻要将1位的全加器串聯起來就可以了,同時将低位的進位作為高位的輸入,風格是這樣的:
一般8個全加器可以組成一個8位二進制運算器,這對于計算機來說叫一個字節Byte,是計算機的最小運算單元。
計算機所能執行的任何程序,不管是做數學運算,還是遊戲,播放電影,最終都是通過這些小小的運算單元來實現的。看似複雜的東西,其實它的原理是這麼的簡單。大道至簡,讓我們再次體會到中國古人的智慧!
更多的計算機知識請關注我的粉絲圈,我将長期緻力于分享計算機科技知識!
,