首先,今天是中國程式設計師日(沒錯就是1024),祝程式設計師們節日快樂!
你的腦海中是不是已經浮現了↓↓
格子顏色深淺也許代表二進位的0和1?
我們經常好奇,程式設計師每天坐在電腦前看著一串串的代碼,這些代碼到底寫的是什麼?
從事程式設計師工作的人有很多,大體上有十幾種,每一種工作內容都有不同:C程式設計師、C++程式設計師、Python程式設計師、vb程式設計師、java程式設計師......
其實不論寫的是什麼代碼,都是在用一種我們普通人看不懂,但是機器能識別的符號,來傳達人的指令,這種在網絡上搬磚的工種也稱為時代碼農。
想要看懂程式設計師碼出來的符號,必然要學厚厚的一本本知識,畢竟↓↓
越禿越證明資歷的頭髮?
但是對於計算機而言,這些語言可比識別我們人類的語言「一把把車把把住了」簡單的多。
不過這還不是計算機語言的最終形態,我們平常寫的程序、敲的代碼,各種數據,在電腦運行識別時,都被編譯器翻譯成了二進位!當再把二進位拆解、計算、重建,就有了我們生活中的軟體、遊戲、音樂、電影、app......
也許,擁有了二進位,就擁有了全世界?
小謝爾頓夢中奇遇的二元宇宙
二進位到底是個什麼?
我們在課上都學過,二進位為「逢二進一」,以及用1或者0來表示,這是為什麼呢?
如果用通俗的方式來解釋,我們可以把二進位比作用燈泡來烽火通信。
比如當完全沒有情況時,一個燈都不用開,用0表示;如果有1個敵人,也就是1個信息,就用1表示。
如果來了200個敵人怎麼辦?將燈泡開關200次不現實,同時亮200個燈泡又太浪費,而同伴又不能識別1和0以外的數字。這時,可以用二進位來表示不同的狀態。
進位換算表
數學課上學習二進位的記憶是不是被喚醒了?還沒搞清也沒關係,這臺機器總能讓你一目了然!↓ ↓
中國科技館【逢?進一】了解一下二進位、十進位吧!
二進位和中國八卦算法一樣?
印象中,二進位服務於電腦,電腦將二進位變得家喻戶曉。
但實際上,萊布尼茨(Gottfriend Wilhelm Leibniz,1646-1716)的二進位最開始並不是專為電腦服務的,這只是他在哲學、法學、數學、神學、倫理學、歷史學、語言學一系列研究中的一項數學研究成果而已。而這項成果的發現,與中國的八卦還有著密不可分的關係。
二進位發明者萊布尼茨曾說過:「從虛無創造萬有,用一就夠了」,而1這個靈感,與中國八卦關係緊密,他曾寫信與北京的神父交流二進位與八卦的關聯性,在他1716年發表的《論中國的哲學》一文中,專門指出了二進位與八卦有共同之處。
八卦和二進位相通?↓ ↓
八卦中的每一個卦,由稱為「爻」的兩種符號排列而成。「― ―」叫做「陰爻」,相當於二進位裡的0,「—」叫做「陽爻」,相當於二進位中的1。
八卦圖中的「橫線」為爻
太極生兩儀,兩儀生四象,四象生八卦,這句話大家應該都熟悉,這句話剛好對應了二進位的計算方法。
以此類推,如果每次取六個,那麼會得到64種排列,稱為「64卦」,其結果也是和二進位一一對應的。
有沒有感受到祖先的智慧,在二進位和十進位出現之前,八卦的和諧之美就已經奠定了。但是否真的是八卦讓萊布尼茨發明了二進位?
傳言當年萊布尼茨發現八卦與二進位有同樣的計數方式後,認為自己窺得了中國幾千年伏羲文化的天機:一生萬物。並且向康熙皇帝寫信,想要在中國建立神學院,更好地研究中國的神學與哲學,但慘遭拒絕。
不過更靠譜的傳言為萊布尼茨發明二進位後,酷愛研究哲學與神學的他巧合地發現了中國的八卦圖正好與二進位的計數方法一致,這才有了二進位誕生於中國八卦的說法。
在歷史的長河湧動下,真相不得而知。不過也引得學者對這個爭議細細考究,還專門出了相關著作來探討這個謎團。
上海人民出版社出版圖書
二進位模型初誕生
不免疑惑,如果最初的二進位不用於晶片那誰來運算?
其實最開始的二進位是由木頭模型演示的,1672年,萊布尼茨搞出了一個木製的機器模型,向英國皇家學會會員們演示二進位,但這個模型只能說明原理,不能正常運行。
他同時也在從事原始計算器的研發,此後,萊布尼茨與鐘錶匠合作,造出了全球首個可以進行乘除運算的原始計算器,萊布尼茨出理論,鐘錶匠出技術,最後由萊布尼茨組裝,一臺由齒輪系統來傳動的,運用計數器和可動的定位機構的計算器在1674年誕生了,這是能進行乘除的計算器在世界上最早的應用。
萊布尼茨的計算器
二進位的創造工作完成後,「沉迷於手工」的全科人才萊布尼茨沒有馬上發表,後來又忙於微積分的改進、研究其它的科學問題......直到1679年,他才重新審視這一重要的數學創造,正式發表了《二進算術》的論文,才算完善了二進位。
別看電腦很強大,它只認得這幾個數
200多年後,約翰·馮·諾依曼將二進位用於計算機中。
為什麼十進位用得好好的,偏偏計算機就要用二進位?
其實CPU的工作原理就是無數次的通電和斷電(我們可以理解為斷電和通電,實際上並不是完全斷電,而是高電位和低電位,一般規定低電平為0~0.25V,高電平為3.5~5V )。
每一次通電、斷電,都是計算機運行的核心和基本,我們看到的畫面、聽到的聲音、打出的文字,全都是集成電路無數次的通電和斷電所轉化呈現的。也就是說,電子管的兩種狀態決定了所有的數據。
電腦集成電路
我們將二進位運用到電腦中,0代表關,1代表開,電腦通過一堆「有兩個狀態的東西」來代表所要表達的數據。信息也就通過無數個0或者1去傳播,最後進行解碼,大家就能獲取其中的信息。
在實際的運用中,具有兩種明顯穩定狀態的元件很多。例如,氖燈「亮」和「熄」;開關的「開」和「關」; 電壓的「高」和「低」、「正」和「負」;紙帶上的「有孔」和「無孔」,電路中的「有信號」和「無信號」, 磁性材料的南極和北極等等,不勝枚舉。
所以磁碟裡的二進位,用磁鐵的N極和S極表示0和1,N=0、S=1,把硬碟的盤面放大了1000萬倍看看,上面都是小磁鐵,通過硬碟的磁頭識別,再變成電流信號「通」和「斷」來交給CPU處理。
光碟上也是一樣,光碟上是用「長」和「短」的小鏡子來表示1和0。把光放大了1000萬倍看看,上面都是長點和短點,用雷射頭一照,根據反光的長度來表示數據。
擔心數據太多了電腦分不清?其實在運行中,每個代表0或1的「燈泡」叫1bit;8個「燈泡」會被編成一組,叫做1個字節,或者1byte(相當於班級中的小組),以這個單位來在網絡上傳輸信息或在硬碟、內存中存儲信息。
通常,我們輸入電腦中一個英文字母需要一個小組,也就是8個「燈泡」表示,一個漢字需要兩個小組,也就是16個「燈泡」表示。
在用電腦的過程中,電腦好不好用,快不快,這種處理「燈泡」的能力會體現在「位」上。比如,電腦的CPU是64位的,就相當於一次能傳遞64個燈泡組成的信息。想一次能處理的信息越多,就需要越多的「位」數。
從1946年誕生的第一臺大而笨重的計算機到今天被廣泛使用的靈巧的筆記本電腦,都是基於二進位運算的計算機。無論計算機所處理的信息是數字、文字還是圖像,這些信息都會被轉換成基於0、1二進位運算系統的信號,一串串的0、1也成為了計算機和資訊時代的代表符號。
如果看完了二進位之後還是一臉蒙圈,那就對了,畢竟數學不好搞!而且,程式設計師並不直接使用二進位語言,因為它太抽象太複雜,所以人們就開發出在二進位計算基礎上的第二基礎語言,以及更進一步的c++語言等,這種語言更方便進行編輯也更容易理解,也就是我們所說的代碼。
日常生活中,我們也許會調侃程式設計師的「發量」、「衣著」......但我們的內心其實也很敬佩他們聰明的頭腦和對枯燥工作的堅守,當然,偶爾也會對程式設計師表以心疼,就像 ↓ ↓
最後,
為程式設計師們獻上幾個笑話
1、世界上有10種人,認識和不認識二進位的。
2、程式設計師為什麼放棄鬥爭呢?因為他沒有兵(array)啊。
3、資料庫SQL走進了一家NoSQL的酒吧,過了一會兒,它就走了出來。因為找不到桌子(table)啊。
創作:中國科技館新媒體團隊
審核:鄭遠攀 新媒體團隊特邀專家
本文來自:中國數字科技館