二進位數系統(binary number system)
你從小用的十進位數使用十個不同的數字符號(0 到 9),每當符號用完,就向左邊那一欄進位。二進位玩的是完全相同的遊戲,只是符號只有兩個:0 和 1。想像一排電燈開關,每個不是關就是開:這個單一的「關/開」選擇就是一個二進位數字,而一整排開關就拼出一個數。電腦喜歡這套,是因為一條導線很容易做出兩種乾淨的狀態(低電壓與高電壓),而要可靠地分辨十種不同電壓,會既脆弱又容易出錯。
在十進位裡,每一欄的價值是右邊那一欄的十倍(個、十、百,也就是 10^0、10^1、10^2)。在二進位裡,每一欄的價值是右邊那一欄的兩倍(1、2、4、8、16,也就是 2^0、2^1、2^2、2^3、2^4)。要讀懂一個二進位數,就把出現 1 的那些位值加起來。例如 0b1011 代表一個 8、零個 4、一個 2、一個 1,也就是 8 + 2 + 1 = 11(十進位)。整個訣竅就是這樣:規則跟普通算術一模一樣,只是用兩個符號和二的次方,取代十個符號和十的次方。
二進位是電腦一切運作的基石。數字、字母、顏色、聲音、機器指令,到了最底層都只是被裝在叫做電晶體的開關裡的 0 與 1 圖樣。當人們說一台機器是數位的,指的就是這套基底二的編碼。一個常見的誤會:二進位並不是某種與十進位寫成 11 的「十一」不同的奇特數;0b1011 和 11 是同一個數量,只是寫成兩種不同的記法,就像「十一」和「XI」一樣。
4 位元的圖樣 0b1101 讀作 8 + 4 + 0 + 1 = 13(十進位)。在二進位裡往上數是 0、1、10、11、100、101、110、111——也就是 0、1、2、3、4、5、6、7。
用相加位值的方式讀懂一個二進位圖樣,並從零開始用基底二往上數。
選用二是為了工程上的可靠,不是什麼數學魔法:兩個相距夠遠的電壓很容易分辨、也能抵抗雜訊。理論上任何基底都行得通,二進位只是最容易做得穩固。