白話計算機與編程三:二進位之美

白話計算機與編程三:二進位之美

來自專欄技術雜談1 人贊了文章

二進位之美,在於她的足夠簡單,簡潔,任何人都能夠很快的理解!

二進位是不是很奇妙啊,在計算機世界裡,只靠0和1就可以描述一切,並且描述的是那麼完美,那麼簡潔,那麼精確!但是計算機真的懂0和1嗎?我個人這個問題思考過一段比較長時間,覺得非常贊同知乎上的一個答案,如下:

計算機從來不懂0 和 1

就像鋼琴從來不懂音樂

就像蘋果從來不知道萬有引力

就像人類從來就沒有真正搞明白大腦和意識

就上面這個答案,下面我來詳細闡述我的理由。

二進位其實是一種計算系統,只有兩個狀態,用0和1表示,前面說過數字只是一種抽象,凡是能夠表示兩種狀態的都可以用來表示二進位,本質是基於等價性原則。比如莫爾斯碼的點和劃,我們經常在抗戰片電報機就是基於莫爾斯碼;再比如布萊葉盲文,用凹凸來表示每個點的狀態;其次再如中國的陰陽,是非的對與錯,都可以用來表示二進位。經過一定的編碼組合,就可以二生萬物!我常說用0和1,是因為它足夠簡單,便於表達和交流!

二進位,莫爾斯碼,布萊葉盲文

那為什麼不用其他進位系統呢,比如人們常用的十進位系統呢?不過1946.2.14的第一台通用電子計算機

ENIAC_百度百科?

baike.baidu.com圖標

確實是基於人們習慣十進位的,但是計算機之父馮·諾依曼在緊接的EDVAC(1949.8)產品中,它是第一台現代通用電子計算機,採用二進位,廢棄了十進位。

個人理由闡述如下:

1.由於十進位比二進位多出8個狀態,而計算機是由硬體構成的,多出的狀態需要更多的硬體來完成;

2.二進位狀態少,意味著足夠簡單,只需要找到一種硬體能夠「穩定」的兩種狀態即可,能夠一定的條件方便切換。

3.由於計算機產生的背景直接原因是因為人類的算力不足,不能夠高速計算,而計算本來基於數學模型的,所以需要一套完備的數學理論,早在19世紀初期,英國數學家喬治·布爾創立了一個學科,叫做布爾代數,而布爾代數中有一部分是邏輯運算,基於Ture和False的數學運算理論,這裡的True和False基於等價性原則,正好可以代表0和1,所以基於二進位計算也有了完美的數學理論支持;

4.由於計算機是放在一個外在環境一系列硬體整體運行的,所以可能會存在雜訊干擾,狀態越少,受干擾的概率就越小,反之,干擾越大,導致結果識別不出來。

5.說了這麼多,二進位或者說布爾代數,怎麼和計算機的硬體聯繫起來呢?現在都是電子計算機,當然是基於電路的等價性,但是在計算機發明之前,這個問題與電路的等價性困擾了將近上百年,直到資訊理論之父「克洛德.埃爾伍德.香農」在1938年發表的論文《繼電器和開關電路的符號分析》才正式提出了這個等價性,由於電路的有無電壓,有無電流,燈泡的亮與滅,可以正好表示布爾代數。即二進位,或者布爾代數,可以用硬體的電路實現!

好了,基於上面五點,也就是為什麼計算機採用二進位的理由!可見,計算機不懂0和1,其實也不懂電路,只不過一直按照人的思維,基於等價性原則,加上人製作的硬體和軟體,通上電自動跑起來而已!因為人能夠通過電路表達0和1,自然也能通過電路的狀態來識別0和1,人類寫出計算的結果,從而達到計算的目的,以下圖為佐證,具體參考altair 8800:

1975年 Altair 8800計算機

好了,重要的東西點了,現在最後簡單說下,電路怎麼和二進位等價起來,也就是布爾邏輯運算怎麼用電路實現。布爾邏輯運算,常見的有三種,與運算,或運算,非運算,如下圖:

與或非運算

在數字電路中,相應的電路成為門,分別為與門,或門,非門,如下圖(本來自己畫,但看到別人直接畫了,就借鑒過來了,參考計算機為什麼能夠讀懂0和1):

與門電路圖

或門電路圖

非門電路圖

基於抽象的原理,我們可以把與或非門組合成一個一個抽象的器件,就像積木塊一樣,我們可以隨機組合把玩,這樣又可以產生一些與非門,或非門,異或門,同或門等,其中異或門電路圖如下:

有了這些門之後,我們是否可以做一位的加法運算呢:

一位加法

1位半加器電路圖

1位全加器電路圖

現在我們的手上又多了很多元器件,通過這些元器件,我們又可以實現很多特定功能的組件,比如8位加法器,選擇器,鎖存器(記憶組件)等。只不過上面的電路都是基於繼電器的,繼電器的主要作用是通過電路將開關自動化閉合切換,從而實現高低電平,有無電流,達到兩種狀態,隨著時代的發展,基於等價性原理,依次出現了真空管和晶體管等,後兩者的切換頻率遠高於繼電器,且壽命非常長!

好了,二進位就講到這裡吧,二進位的美在於簡潔簡單,計算機其實根本不懂0和1,只不過是按照人的思維,基於等價性原則,按照人預定的規則進行編碼和解碼而已,而0和1也不僅僅是兩個數字,更是具有抽象層次的概念,通過它能夠表達自然界的萬事萬物!


推薦閱讀:

自製老鼠行為系統
使用 LUKS 加密你的磁碟
如果計算機是中國人(華夏文明)發明的
非遺新知 中國貢獻給世界最古老計算機的前世今生
用計算機觀察聲音的波形

TAG:計算機 | 編程 | 二進位 |