有人說,好奇怪,十進制,我們是個手指數的過來,挺好的,爲什麼要搞一個二進制這麼複雜的進位呢?你覺得複雜,你覺得很不習慣,非常正常,因爲二進制本來就不是給人看的,它是給機器用的,就是,機器底層在計算的時候就是用二進制,爲什麼機器底層要用二進制呢?因爲二進制好實現,比如說機器要計算1+5,那麼,1+5怎麼算呢?怎麼表示一個5呢?這就很麻煩,但是,如果是機器只算1+0或者1+1的話,這就很容易,1可以表示爲5伏,0可以表示爲0伏,它可以用電壓來表示,這就可以更容易實現,開關打開或者關閉即可,所以,我們很多理論不是說這個理論很高端,它是對的,邏輯是自洽的就可以實現,你得用物理的方法把它做出來,這就是另外一回事了。
電腦當中存一個數字最低起碼是一個字節,就是0000 0001,這是八個bit,組成了一個Byte,就是八個01位組成一個最小的存儲單元,來存儲一個數字。
電腦底層只有電,那麼這些01怎麼轉換成電路中的實實在在的東西呢?這個很重要,就要用到我們電腦當中的一個叫做加法器,它實際上分爲半加器和全加器,半加器就是不帶進位的,全加器就是帶進位的,我們直接講全加器,
既然是芯片,那麼,這邊都是帶電的,1用5伏代替,
所以,整個結果運算出來就可以用電路來實現。當然它的內部也不難
往裏面再看一層,就是與非門、與或非等等,你把與或非門再打開來看,就是晶體管、三極管、電阻之類的,所以,它就可以用實實在在的電路來實現。
把這個全加器級聯起來,比如說,把上一級的進位放到這裏
輸入就可以算出下一個結果。
那麼,這個進位再丟到下一級,那麼,又可以進一位,所以,這兩位的一個加法器就可以級聯起來,成爲八位的一個加法器,甚至更多位的,所以,我們就可以算出剛纔這樣的數據
哪怕你有更多位,比如32位,32個bit,就是,32位的加法器都是可以實現的,只需要把這些,一個全加速器這種基本的單元給它級聯起來就是這樣的,那麼,CPU底層實際上就是用這種最基本的算術單元,所以,你看以前的計算機在沒有機械硬盤或者磁帶的時候,科學家、工程師怎麼編程?用紙帶打孔,打個孔那就是0,不打孔的紙帶就是1,所以,一個紙帶密密麻麻的,有孔沒孔有孔沒孔,就是10100,這就是程序,運算結果出來的也是紙帶。
這就是計算機底層的運行原理。