二進位的前身是八卦?一起走進10000000000的世界

2020-12-04 中國科學技術館

首先,今天是中國程式設計師日(沒錯就是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的「燈泡」叫1bit8個「燈泡」會被編成一組,叫做1個字節,或者1byte(相當於班級中的小組),以這個單位來在網絡上傳輸信息或在硬碟、內存中存儲信息。

通常,我們輸入電腦中一個英文字母需要一個小組,也就是8個「燈泡」表示一個漢字需要兩個小組,也就是16個「燈泡」表示

在用電腦的過程中,電腦好不好用,快不快,這種處理「燈泡」的能力會體現在「位」上。比如,電腦的CPU是64位的,就相當於一次能傳遞64個燈泡組成的信息。想一次能處理的信息越多,就需要越多的「位」數。

從1946年誕生的第一臺大而笨重的計算機到今天被廣泛使用的靈巧的筆記本電腦,都是基於二進位運算的計算機。無論計算機所處理的信息是數字、文字還是圖像,這些信息都會被轉換成基於0、1二進位運算系統的信號,一串串的0、1也成為了計算機和資訊時代的代表符號。

如果看完了二進位之後還是一臉蒙圈,那就對了,畢竟數學不好搞!而且,程式設計師並不直接使用二進位語言,因為它太抽象太複雜,所以人們就開發出在二進位計算基礎上的第二基礎語言,以及更進一步的c++語言等,這種語言更方便進行編輯也更容易理解,也就是我們所說的代碼。

日常生活中,我們也許會調侃程式設計師的「發量」、「衣著」......但我們的內心其實也很敬佩他們聰明的頭腦和對枯燥工作的堅守,當然,偶爾也會對程式設計師表以心疼,就像 ↓ ↓

最後,

為程式設計師們獻上幾個笑話

1、世界上有10種人,認識和不認識二進位的。

2、程式設計師為什麼放棄鬥爭呢?因為他沒有兵(array)啊。

3、資料庫SQL走進了一家NoSQL的酒吧,過了一會兒,它就走了出來。因為找不到桌子(table)啊。

創作:中國科技館新媒體團隊

審核:鄭遠攀 新媒體團隊特邀專家

本文來自:中國數字科技館

相關焦點

  • 易經八卦和二進位的關係
    易經八卦和二進位的關係今天我們一起研究一下二進位和它的起源,首先我們先說一下什麼是二進位?二、易經八卦和二進位的關係系統的提出二進位觀點的人是德國的數學家和哲學家萊布尼茨,也就是跟牛頓爭奪微積分發明權的那個人,據說萊布尼茨是根據中國易經發明了二進位。那我們應該來說一下了,這個八卦到底是怎麼回事,怎麼推演?
  • 二進位與計算機
    現在國際通用的主要進位制有十進位、二進位、二十進位和六十進位。其中的二進位是計算機通用的進位制。 八卦:最早提出的二進位思想 中國古人很早就開始使用十進位的計數方法,其數字符號有:一、二、三、四、五、六、七、八、九、十、百、千、萬、億、兆等。此外,還有與中國的傳統思想、文化和生活有密切關係的符號體系——天幹、地支和八卦。
  • 二進位是源於《易經》嗎?
    二進位是計算技術中廣泛採用的一種數制,20世紀被稱作第三次科技革命的重要標誌之一的計算機的發明與應用。二進位數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」,由18世紀德國數理哲學大師萊布尼茲發現。
  • 你可能不知道,二進位比十進位更簡單
    在世界各文明獨立發展的數學中,出現過二十進位、六十進位、十六進位、十進位等,其中最廣泛採用的數制是十進位。亞里斯多德曾對此分析,可能是因為人有十個手指頭的緣故。直到現在,小朋友們學算術時還經常掰著手指頭算簡單的加減運算。
  • 現代二進位計算機,其原理到底是不是從八卦中引出的呢?
    而要做到這一點,首先得放棄大家熟悉的十進位,改用二進位。 二進位早已有:易經八卦與培根的加密法 其實二進位的概念很早以前就有了。例如易經共有六十四卦,原本是用數字標記,但到了戰國時代,易經與陰陽思想結合,卦象逐漸改用陰陽兩種符號標記,最晚在東漢時期,就定型為目前所見的線條符號。
  • 二進位與兩元顛倒訣
    順便說一下, 六爻定世應的方法也是比較簡單的, 網上的文章一般描述比較複雜, 其實就是先天八卦中,自震起一數,遇到坎離就跳過去, 順時針數, 而如果歸藏出來的是坎離, 那麼坎是歸魂四爻,離是遊魂三爻.
  • 二進位轉換為十進位和十進位轉換為二進位的方法
    各位小夥伴們大家好,在之前的文章中小編也介紹了關於二進位轉十進位的方法,這次小編知道了一個更簡單的方法,具體如下:比如我們要把28轉為二進位:,從左往右把二進位數字湊在一起,11100就是28的二進位了。
  • scratch+程小奔機器人實現「進位轉換」(十進位轉二進位)
    >【原創】文章全部內容皆為作者原創,如有轉載請註明出處我們人類有十根手指,通常情況下我們在生活中的計數方式為「十進位」(即0-9),也就說滿十進一;而在計算機的世界裡,基礎電路只有「開/關(通/斷)」(即0/1)兩種情況,這與誕生幾千年的二進位不謀而合;例如:二進位數字
  • 二進位、十進位、八進位、十六進位間的相互轉換函數
    二進位、十進位、八進位、十六進位間的相互轉換函數1、輸入任意一個十進位的整數,將其分別轉換為二進位、八進位、十六進位。{int num;char a[39];//定義一個字符數組,用於存儲字符串cout<<"Entre num:"<<endl;cin>>num;cout<<"二進位
  • 關於二進位、十進位、八進位、十六進位數據轉換計算方法詳細總結
    (1)十進位轉換為八進位 十進位轉換成八進位有兩種方法: 1)間接法:先將十進位轉換成二進位,然後將二進位又轉換成八進位 2)直接法:前面我們講過,八進位是由二進位衍生而來的,因此我們可以採用與十進位轉換為二進位相類似的方法,還是整數部分的轉換和小數部分的轉換
  • C/C+編程筆記:C語言進位詳解,二進位、八進位和十六進位!
    二進位 我們不妨將思維拓展一下,既然可以用 0~9 共十個數字來表示數值,那麼也可以用0、1兩個數字來表示數值,這就是二進位(Binary)。例如,數字 0、1、10、111、100、1000001 都是有效的二進位。
  • 數論之十進位轉二進位
    一、實驗目標輸入一個正整數,轉換為二進位輸出。輸入樣例1:14輸出樣例1:1110數據範圍:* n <= 2^31二、分析2、方案和步驟用一個數組a[100]來保存二進位,用last表示當前存儲的位,last=1表示二進位的個位數。
  • 加法器電路原理_二進位加法器原理_與非門二進位加法器
    加法器可以用來表示各種數值,如:BCD、加三碼,主要的加法器是以二進位作運算。由於負數可用二的補數來表示,所以加減器也就不那麼必要。   加法器電路原理   在計數體制中,通常用的是十進位,它有0,1,2,3,…,9十個數碼,用它們來組成一個數。但在數字電路中,為了把電路的兩個狀態(1態和0態)和數碼對應起來,採用二進位較為方便,二進位只有0和1兩個數碼。
  • 嵌入式,單片機編程基礎-二進位
    涉及到比特位當然以二進位表示最為自然。其次,我們在編寫或閱讀底層代碼時,如果涉及到寄存器的配置或是有關比特位的操作也是離不開二進位的影子。那就來介紹下一些比較常用的的有關二進位的東西。二進位的表示方法。比如我們要給一個char型變量a賦值一個二進位數100。如果我們寫成a=100,那麼a就是100。
  • 十進位和二進位之間的轉換
    例題 1.3.3 將(25)D轉換為二進位數。  解:該題的解題思想是,不斷地用2分解十進位整數,並將餘數按得到的順序由低位到高位排列,即可得到對應的二進位數。:當要將一個很大的十進位數轉換成二進位數時,採用例題1.3.3的做法很費時 ,我們可以採用另外一種方法。
  • 如何實現二進位轉十進位的設計
    設計背景: 二進位轉十進位在設計應用中十分的廣泛。尤其在AD轉化中是必須所用到的一個小知識點,學習二進位轉十進位的方法顯的非常的重要。今天就和筆者來學習二進位轉十進位的方法,通過簡單的學習來掌握這麼一門知識。
  • 二進位小總結
    計算機中通過高低電平表示1或者0,這樣就可以表示一個二進位的數值。一個1或者0表示的數值位稱為一個bit,而計算機中存儲和傳輸數據的最小單位是一個字節(byte)也就是8個bit,所以說計算機所有計算本質上都是基於二進位。在計算機中,我們可以使用1個或者多個字節存儲一個數,但無論是多少個字節,其大小肯定是固定的,同時其所能表示的數值的範圍也是固定的。
  • 什麼是二進位,這裡讓你通俗易懂
    關於計算機的二進位,首先來想想我們日常使用的十進位。那麼為什麼我們日常要使用十進位呢?其實看看你的雙手,一共有幾根手指?是不是一共十根?那麼10 代表的就是一雙手的手指的數量。但是到了計算機裡這種數值表述方式就麻煩了,如果我們要在計算機保存十進位數值那麼,計算機得有能力用某種形式描述出至少10種狀態才行也就是0到9。那麼想像一下要是我們每隻手只有3個手指,那麼如果10 依舊代表一雙手(六根手指),此時12相當於一雙手加兩個手指 也就是「八」。這種計數方式我們可以稱為6進位。
  • MySQL涉及二進位的運算符:位運算符
    那有沒有一種專門為二進位數字提供的運算符呢?這就是本問題的主題:位運算符。所以我們先要把參與操作的數字轉化為二進位形式。如下:【結論】3|8就是兩個二進位數0011與1000進行按位或的計算,對應的二進位位有一個或兩個為1,運算結果為1,否則為0。所以,3|8的結果是1011,轉化為十進位就是11。
  • 跟我學解Python題-二進位轉換
    實現:輸入十進位正整數,輸出相應的二進位數字輸入樣例1:6輸出樣例1:110輸入樣例2:27輸出樣例2:11011解題過程:1、新建變量num,用於存儲輸入的十進位數字,num=int(input("請輸入想要轉換的十進位數字(十轉二)"))