其實二進位真的是個有趣的東西,而且作為學習電腦基本常識的你,了解二進位的相關知識那是必備滴,相信我,看完今天這篇文章,你會get到很多姿勢,最後讀完覺得不錯的,請無情的點讚或轉發吧!
01二進位的前生
在眾多的數字中,除了π、e及虛數i,最神奇的數就是0和1了。在所有自然數中,這兩個數最小,但它們的屬性卻最豐富,功能也最強大。在現代生活裡,在你不經意中,0和1幾乎無處不在。在你收看電視節目、聽著音樂、拍攝照片或使用計算機時,都有無數的0和1在忙碌著;在超市各種商品包裝上、在圖書上的條形碼裡,0和1更是無處不在。0和1的強大功能和神奇特性使二進位技術功能得以實現。有了二進位,0和1成為一切數的源泉,它們可以包容一切數,其他數可以被它們取代,它們也可以轉化為任何數,它們的這一功能任何數都取代不了。
有人認為,最早的二進位思想源於古代中國。1660年,德國路德教會神學家斯比賽爾(Theophilus Spizelius)著有《論中國文化》一書,該書詳細介紹了中國的太極陰陽八卦圖,介紹了中國的「陰陽生二一,二一生八卦,八八六十四卦」的數學模型,有人認為其中就有「二進位」思想的「種子」。
西方也記載著德國數學家威廉·萊布尼茨的二進位思想。至今在德國圖靈的郭塔王宮圖書館裡,仍然保存著一份珍貴手稿,其標題為:「1與0,一切數字的神奇淵源。這是造物美妙的典範,因為,一切無非都來自上帝。」這是天才萊布尼茨的手跡。
二進位最適合邏輯運算,它只有兩個數碼,正好與邏輯代數中的「真」和「假」相吻合。二進位兩個數碼正好與邏輯命題中的「真(True)」、「假(False)」或稱為」是(Yes)」、「否(No)」相對應。
200多年前,沒有誰明白二進位的偉大,唯有萊布尼茨一眼就洞穿數理邏輯的終極奧義,當現在回溯AI的起源時,有些人將萊布尼茨視為真正的鼻祖。
如果看到今天二進位在人類文明中所佔據的位置,萊布尼茨可以對著遙遠的東方重複他曾經說過的話:二進位乃是具有世界普遍性的、最完美的邏輯語言。
萊布尼茨斷言,「二進位乃是世界最普遍、最完美的邏輯語言」。在萊布尼茨寫給若阿基姆·布韋的信中說:「第一天的伊始是1,也就是上帝;第二天的伊始是2……,到了第七天,一切都有了。所以最後的一天也是最完美的。因為此時,世間的一切已經被創造出來了。因此它被寫作為7,也就是111(二進位中的111等於十進位的7)。這種「完美」僅僅用0和1來表達時才能理解——為什麼第7天最完美?為什麼7是最神聖的數字?特別值得注意的是它(第7天)的特徵(寫作二進位的111)與三位一體的關聯。」
萊布尼茨的朋友、傳教士鮑威特(J. Bouuet)曾給他寄來一本拉丁文譯本的《易經》。《易經》成書於中國的商代,流傳到歐洲已經是數千年之後。1703年4月1日,萊布尼茨看到了這本書,他驚奇地發現,《易經》中的陰爻和陽爻中隱含二進位思想。很可惜的是,雖然在古代中國,尤其是先秦時期,產生了一些偉大的思想家,但他們的思想過多地引向到人際關係之上,而沒有像希臘那樣走向科學和哲學的道路。
如果說,作為原始思想,其中含有二進位的萌芽主要用在了佔卜之上,並沒有從數學理論上給予拓展,也沒有為二進位建立自身的運算法則,更沒有建立二進位與其他進位間的換算關係,那自然不可能在科學技術上發揮它的作用,這是非常可惜的。
19世紀中葉,英國數學家喬治·布爾(George Boole)為了研究邏輯運算而構思了一個關於0和1的代數系統,用它們作為基礎符號,描述所需要表述的命題或概念,由此創建布爾代數,又叫邏輯代數。它與普通代數有所不同。在普通代數中,字母可以表示各種數,可以是各種實數,也可以是複數,甚至是四元數等,普通代數可以對字母進行各種數學運算。但是在布爾代數中,字母只能代表兩種對立的狀態,如0或1、是或非、真或假等,而對字母所做的也只是邏輯運算。這樣一來,布爾代數就為數字計算機的開關電路設計提供了重要的數學方法。
02二進位在邏輯門電路實現算數運算
在數字電路中,可以用電路的狀態來表示數碼。然而,要讓電路狀態表示0~9這10個基本數碼,在技術上是極為困難的。電路可以有「通」與「不通」,或者電壓「高」與「低」等兩種狀態,而這兩種狀態就可以與0或1對應。如果利用數字電路研究命題的邏輯,而命題也只有兩種對立狀態,如「真」和「假」,在計算機運行的時候,程序就像一系列「真」或「假」的命題在執行邏輯推理,當命題進入電路的時候,按照布爾代數,它們或者將電路打開,或者關閉。例如,當兩個「真」命題進入電路時,就讓電路打開,但是當一個「假」的命題進入電路時,就讓電路關閉。
利用布爾代數,就可以把數以百計的電路集合起來,編寫出各種充滿想像力的電腦程式來。所以,二進位在數字電路中不僅具有可行性、簡易性,其邏輯也具有可靠性。
03計算機為什麼會用二進位?
如今馮·諾依曼所發展的二進位原理、布爾代數原理、開關電路原理和存儲程序控制原理等,已經成為計算機普遍的工作原理,而且是電子學、計算機硬體和軟體應用的理論基礎。
計算機為什麼會用二進位?
技術上容易實現
用雙穩態電路表示二進位數字0和1是很容易的事情
● 可靠性高
二進位中只使用0和1兩個數字,傳輸和處理時不易出錯
● 運算規則簡單
與十進位數相比,二進位數的運算規則要簡單得多,這不僅可以使運算器的結構得到簡化,而且有利於提高運算速度
● 與邏輯量相吻合
二進位數0和1正好與邏輯量「真」和「假」相對應,用二進位數表示二值邏輯顯得十分自然
● 二進位數與十進位數之間的轉換相當容易
人們使用計算機時可以仍然使用自己所習慣的十進位數,而計算機將其自動轉換成二進位數存儲和處理,輸出處理結果時又將二進位數自動轉換成十進位數,這給工作帶來極大的方便
如果計算機只存儲二進位數據,那麼它如何表示字符呢?計算機使用的是字符集,將字符映射為整數。早期,字符集只用 8 位表示。即使是現在,在字符模式下運行時,IBM 兼容微機使用的還是 ASCII(讀為「askey」)字符集。
ASCII碼使用指定的7位或8位二進位數組合來表示128或256種可能的字符
標準ASCII碼也叫基礎ASCII碼,使用7位二進位數來表示所有的大寫和小寫字母數字0到9、標點符號,以及在美式英語中使用的特殊控制字符ASCII分配數值。
04二進位的出現的意義
據程式設計師說,「世界上有10種人,一種是懂二進位的,另一種是不懂二進位的。」
Get到?二進位的世界是黑白分明的,它只有兩種可能,0或者1。一步從無到有,下一步從有到無。二進位是說給計算機的語言,別去試圖讓它理解為什麼薛丁格的貓有生死雙重性,也別告訴它黑白之間還有多少度灰,正如它不會去猜你的心情是好是壞還是百無聊賴。計算機因電子電路只能開或關的性質,一切運算只能憑藉二進位。但是就靠這簡單粗暴的非是即非的邏輯,它可以做出複雜的程序,恢宏的遊戲,播放感人的電影,把浩瀚的博物館搬到屏幕上,還可以模仿人類情感,比人類更智能。只是它的原理最終還是要回到0和1。很久之前在某個我剛睡醒的初中課堂上,數學老師在講一道奧利匹克加分題,數學不好的我自知實在沒必要聽這麼難的題,本想繼續睡過去,可是他突然說,你知道,世界上最複雜的問題也能被拆分成許多簡單的問題,只不過是很多簡單的問題罷了。我一下子清醒過來了,第一次想聽聽那道跟我沒關係的題,也許我也能懂呢。如果世間一切複雜的事都能被化解成一系列的yes和no,也許我們不用有壓力,花時間去慢慢分解即可。
可以說二進位的出現,促進了計算技術的發展,改變了人們對自然界的認識。它首先促使人們思考究竟什麼是算法,它的本質又是什麼。長期以來,人們總以為「計算」或「算法」一直是屬於數字或符號的專有概念,但在計算機廣泛使用的今天,這個概念已經泛化到了整個自然界。
畢達哥拉斯曾說「萬物皆數」。數學是萬物的基礎,數學是現實世界的核心。從實質上說,任何一個自然過程都是按照一定的規則進行信息處理的過程,其本質上都體現了計算或算法的嚴格特徵。
現實世界萬事萬物,從非生命到生命,從感覺到意識,甚至整個世界的進化過程,它們的區別只不過是算法的複雜程度不同而已。現實世界具有多樣性和複雜性,二進位的出現,使人類所在的世界有了進行計算的可能。在實現對多樣性和複雜性的計算中,0和1數字的神秘性就更加耐人尋味。