二進位的「前世今生」

1與0,一切數字的神奇淵源。

這是造物美妙的典範,

因為,一切無非都來自上帝。

從一枚古銀幣談起

1697年元旦,萊布尼茨寫了一封信給魯道夫·奧古斯都公爵。

寫信的同時,他贈送了一顆自己製造的銀幣給公爵,這顆銀幣的出現,真正預示著二進位的誕生。

銀幣的正面當然是公爵帥氣威風的肖像,這是為了獲得「科研經費」必須做出的妥協。

反面是一則創世故事:水面上籠罩著黑暗,頂部光芒四射……中間部分雕刻的是從1到17的二進位數學式。

考慮到公爵的智商,文筆晦澀的萊布尼茨講述了他構思的一枚題為「造化之象」的紀念幣:全能的上帝從無創造有。現在我們可以說,數字的起源是世上能最好展示和說明這種力量的事物,它以「一」和「零」或者說「無」的形式呈現,既樸素又簡練。

銀幣上面刻著十進位與二進位的對比狀態:

十進位 二進位

0 0

1 1

2 10

3 11

4 100

……(以此類推)

13 1101

14 1110

15 1111

16 10000

17 10001

從這一天起,現代數學意義上的「二進位」誕生了。

1

十進位PK二進位

牛頓與萊布尼茨的對話

牛頓實在是看不下去了,你丫為了騙「科研經費」,又開始忽悠領導了。

作為萊布尼茨的老對手,牛頓這次放出話來要正面KO死萊布尼茨。

老祖宗傳承下來的十進位不是用得好好的嗎?搞個二進位出來完全是製造社會混亂,混淆人類視聽,可惜英國的警察不能跨省去德國,否則早就把這廝抓回劍橋整成神經病。

我都用它推導出萬有引力來了,還有什麼事情十進位搞不定?

萊布尼茨心裡也正窩著火呢,PK就PK,關於微積分的事情,你丫多次「洗我的稿」還沒時間找你呢,正好一起算總賬。

PK正式開始:

牛頓:你丫憑什麼說二進位比十進位更簡潔?

萊布尼茨:上帝只用二根手指就可以搞定一切。

牛頓:你確定兩根手指可以演算世間萬物?

萊布尼茨:你看看我這張東方的康熙皇帝賜予的「先天八卦圖」就明白了。

牛頓嚇了一大跳,我靠,這丫背景很硬,連東方的皇帝都搞上關係了,我得小心。

牛頓認真研究了下《萊布尼茨——二進位與伏羲八卦圖考》,作為具有大智慧的人物,牛頓恍惚有些明白,他心中怦怦直跳,萊布尼茨這丫看來又要搞大事啊。

牛頓當然不會認輸:可二進位與十進位比,在計數上沒什麼太大意義。

萊布尼茨:計數上意義不大,但它具有邏輯性,「零」表示「無」,「壹」表示「有」,我的二進位不是代數運算,而是數理邏輯運算。

…………(這個有點難,牛頓花了點時間才算整明白)

牛頓:可這二進位實在太麻煩,完全沒有辦法製造機器運算。

萊布尼茨:我這個又不是給你用,我這個是給計算機準備的。

牛頓傻眼了:計算機是什麼玩意兒?

萊布尼茨:說了你也不懂,那是200多年後的寶貝。

牛頓氣得口吐白沫:就不能好好說個話嗎?

萊布尼茨:沒辦法,你代表的是古典十進位,我代表的是未來的二進位。

2

為什麼計算機只愛「二進位」

人類天生有十個手指,自然也就有了十進位。

在亞馬遜邊上打漁回來分食人魚,所有人伸出十個手指,基本夠用。

那數字到底怎麼表述呢,人類畢竟是視覺動物。

東方的聖賢說:零一二三四五六七八九十……

西方的大哲說:one,two,three,four,five,six,seven,eight,nine,ten.....

兩者爭得不可開交時,從沙漠趕來的阿拉伯人翻譯道:還是用我們的0123456789吧。

經過上千年的折騰,人類基本達成了一致,看在真主的份上,那就用阿拉伯數字。

但到了計算機時代,計算機怎麼識別0123456789呢。

偉大的馮諾依曼為這事一臉愁容,折騰了一年,才發現問題出在十進位。

這時候一個聰明人想到了:電這東西其實可以表示很多狀態,比如用電流來表示數字,0~0.9A表示0,1A表示1,2A表示2,3A表示3。想到這裡,聰明人開始自我表揚了,這世界上還有難題可以擊倒我嗎?!

馮諾依曼翻了個白眼,這個還需要你提醒嗎,這畢竟是1945年,二次大戰還沒有完全結束呢,這個時候的電子元件根本無法讓電流變得非常穩定。

聰明人表示了不滿:這都控制不了,搞什麼科學研究。

馮諾依曼心中有一萬匹草泥馬跑過:you can you up, no can no bb!

其實這還不是馮諾依曼最擔心的,最讓人焦慮的是圖靈提出來的「計算思想」的問題,就算用電流計算的方式表示出10個狀態,也沒有辦法讓電腦真正思考啊。畢竟電子計算機除了計數之外,還有判斷對錯的問題。

這個晚上,馮諾依曼做出一個重要的決定,根據電子元件雙穩工作的特點,在電子計算機中採用二進位。

3

二進位的計算原理

我的智商有限,讓諸葛亮先生來告訴你二進位的計算原理。

諸葛亮為了北定中原興復漢室,親自駐守西城,此時的司馬懿兵強馬壯,諸葛亮派愛將馬謖駐守街亭,與西城首尾相望。

街亭山高谷深,地勢險要,為兵家必爭之地,進可攻關中,退可守隴右。

諸葛亮叮囑馬謖:魏軍若來100人,你就點亮1盞「孔明燈」通知我,我想清楚知道魏國來了多少敵軍,我派王平和趙雲做好準備,這次必將活捉司馬懿。

馬謖腦瓜兒挺機靈:丞相我懂了,若是敵人來了100個,我就放飛1盞孔明燈。若是敵人來了1000個,我就放飛10盞孔明燈。若是敵人來了10000個,我就放飛100盞個孔明燈。若是敵人來了100000個,我就放飛1000盞孔明燈。

諸葛亮差點跳起來:你以為孔明燈那麼好做,放飛250盞孔明燈,你知道要多少軍費嗎?今天下三分,益州疲弊,你還這麼浪費。

馬謖腦眼珠一轉:丞相我懂了,敵人來了一個,我就點亮一次,這樣的話,我就只需要1盞孔明燈了。

諸葛亮長嘆了口氣:幼常啊,你想一想,我現在快五十歲的人了,又近視得厲害,你認為我能夠看得清楚你點了多少次嗎?而且你這點來點去的,中間萬一數錯了呢?

馬謖這下傻眼了:丞相,求答案。

諸葛亮搖了搖羽毛扇:你得學學二進位,多安幾盞孔明燈,你把它們裝在街亭最高處,但注意,必須以同樣的距離排列。

馬謖完全糊塗了:丞相,什麼是二進位?

諸葛亮搖了搖羽毛扇:二進位,乃天人之學也。

兩人耳語甚久,馬謖似懂非懂,最終拜服,丞相乃天人也。

諸葛亮道:現今你明白了二進位,只須排列好10盞燈,就可以將敵情準確上報。我在西城定好位置,按照定好的方位觀察亮燈的位置,就可以運籌帷幄。

0000000000,8盞燈全滅,說明無敵軍來犯。(狀態0)

0000000001,第一個位置亮了燈,來了100個敵人,你負責幹掉他就行了。(狀態1)

0000000010,第二個位置亮了燈,來了200個敵人,小菜一碟,街亭無憂。(狀態2)

0000000011,第一二位置都亮了燈,來了300個敵人,也不是什麼大事。(狀態3)

0000000100,第三個位置亮了燈,來了400個敵人,派出小股軍隊滅了他們。(狀態4)

0000000101,第一三位置都亮了燈,來了500個敵人,得小小注意下了。(狀態5)

諸葛亮擔心馬謖還是沒有真正地聽明白,特意給了他一張密碼對照表,按照這個密碼錶,點起孔明燈就是了。

附表:

10進位編號 燈泡表示

狀態 1 0000000001

狀態 2 0000000010

狀態 3 0000000011

狀態 4 0000000100

狀態 5 0000000101

……(以此類推)

狀態 996 1111100100

狀態 997 1111100101

狀態 998 1111100110

狀態 999 1111100111

狀態 1000 1111101000

這就是二進位的基本工作原理,說實在的,確實比十進位有用多了。

4

《周易》和二進位

很多人談到二進位,就會說起中國的《周易》。

還有一些人迷信:因為白晉給萊布尼茨看了中國的先天八卦圖,萊布尼茨才創造了二進位。

在很多人眼中,中國傳統文化就是這麼所向披靡,無往而不勝。

事實上,萊布尼茨在沒有看到先天八卦圖前的1697年,就已完成了論文《二進位算術》的草稿,也就是他在向公爵忽悠「科研經費」時已經完全搞定論文。古代的科學家真是非常敬業,有了成果後才好意思要經費。萊布尼茨詳盡說明了「二進位」算術原理,而且還給出了加、減、乘、除四則運算的規則。

1701年,萊布尼茨心血來潮想巴結下東方的帝王,給自己找條後路,畢竟那時候的西方世界被牛頓給統治了。他聽說康熙皇帝喜歡數學,就給在北京的法國傳教士白晉的信中,闡述了「二進位」的算術規則,並希望白晉將「二進位」介紹給康熙皇帝。收到信的白晉感覺萊布尼茨的「二進位」似乎與中國的八卦圖形有某種聯繫,比如八卦中的陰爻「——」就像「二進位」中的「0」,陽爻「——」就像「1」。於是他在回信中說明了自己的這個想法,並且把一幅「伏羲六十四卦方點陣圖」一併寄回。這才是《周易》和二進位相遇的原因,傳教士真是個好東西。  

萊布尼茨見到那張六十四卦圖已是1703年,收到東方帝王關照的萊布尼茨興奮不已,很快就在法國科學院院報上發表了自己那篇關於「二進位」的文章,題目就叫《關於只用兩個記號0和1的二進位算術的解釋——和對它的用途以及它所給出的中國古代伏羲圖的意義的評註》。

中國的八卦符號分為連續的與間斷的橫線兩種。這兩個後來被稱為「陰」、「陽」的符號,在萊布尼茨眼中,就是他的二進位的中國翻版。萊布尼茨完全是以個人的傑出才華,依靠一己之力推演出二進位。

二進位是最完美的邏輯語言

2018年,在德國圖靈的郭塔王宮圖書館裡,仍然保存著一份珍貴手稿,其標題為:「1與0,一切數字的神奇淵源。這是造物美妙的典範,因為,一切無非都來自上帝。」這是天才萊布尼茨的手跡。

二進位最適合邏輯運算,它只有兩個數碼,正好與邏輯代數中的「真」和「假」相吻合。二進位兩個數碼正好與邏輯命題中的「真(True)」、「假(False)」或稱為」是(Yes)」、「否(No)」相對應。

200多年前,沒有誰明白二進位的偉大,唯有萊布尼茨一眼就洞穿數理邏輯的終極奧義,當現在回溯AI的起源時,有些人將萊布尼茨視為真正的鼻祖。

如果看到今天二進位在人類文明中所佔據的位置,萊布尼茨可以對著遙遠的東方重複他曾經說過的話:二進位乃是具有世界普遍性的、最完美的邏輯語言。


推薦閱讀:

周易與二進位
二進位演卦
CPU只會加法和邏輯運算~
二進位 轉換成十進位 BCD碼(加3移位法)

TAG:二進位 | 前世今生 | 進位 |