天下一指、萬物一馬︰二進制

人們習以為常的語言、文字都是符號系統。當我們講到玫瑰花,是指「可以看、聞、摸的那種植物的花」,如果缺乏感官經驗,也許根本不能知道玫瑰花是什麼?或者正因為經驗的自然平常,以致於我們忘了玫瑰花只是個符號。有人說玫瑰花即使換個名字‥ Rose ,依然芬芳香甜,指的就是這個道理。如同月亮高掛天空,只能一指說月;天下廣大,當然也只能一指而知,所以說萬物雖然眾多,可以用像談馬一樣的東西去理解。在歷史上大數學家邱奇的 λ 演算,把數學的形式系統推上了高峰,同時加深了人們對『數是什麼?』的認識。

一朵花、一隻鳥、一座山、一片林…都是一,知道『』、又知道『加上一』,就可以知道數的無窮無盡。然而對於無窮無盡的數又該怎樣命名呢?古代中國發明了十倍為單位的記數法︰十十為百、十百為千、十千為萬…。初期用一、二、三、四、五、六、七、八、九、十來書寫,而後因為需要發展了大寫數字‥壹、貳、參、肆、伍、陸、柒、捌、玖、拾。至於說為什麼用十呢?也許因為人有十個手指頭,常用來數數指物。那為什麼沒有零呢?中國古代並沒有零的符號,在概念上『九章算術』用「無入」來表達,算盤上用「空位」去說明。現在所使用的阿拉伯記數法︰0、1、2、3、4、5、6、7、8、9,是在漫漫歷史長河中逐步變遷而來。由上述可知三百、參佰、300 雖然說的是同一個數,它的符號卻是不同的。同樣可以知道阿拉伯記數法用位置代表數量級,所以 0 的加入是必要的。

隨著對計數法的認識、算術的了解,阿拉伯記數法被稱為十進制,逢十進位,用 0、1、2、3、4、5、6、7、8、9 十個數表示數量級的數值。舉例來說︰

 362 = 3 * 10^2 + 6 * 10 + 2

 251 = 2 * 10^2 + 5 * 10 + 1

 362 + 251 = ( 3 * 10^2 + 6 * 10 + 2 ) + ( 2 * 10^2 + 5 * 10 + 1 )

 = (3 +2) * 10^2 + (6+5) * 10 + (2+1)

 = 5 * 10^2 + (10+1) * 10 + 3

 = 6 * 10^2 + 1 * 10 + 3

這也正是直式加法,位置對齊、逢十進位的原則。在這種表達裡,如果一個五位數記作 abcde ,0 <= a, b, c, d, e <= 9 ,它指的就是這一個數︰

 abcde = a * 10^4 + b * 10^3 + c * 10^2 + d * 10 + e

在數學裡,我們很容易理解  a * X^4 + b * X^3 + c * X^2 + d * X + e ,就是說所謂的 X 進位制正是指這樣表示一個數的,式中 0 <= a, b, c, d, e<= X – 1  。因此一個 二進制 的四位數 1010 = 1 * {2^3} + 0 * {2^2} + 1 * 2 + 0 就是十進制的 10。一般在計算機硬體設計上常用二進制,是因為電壓的高低、電流的有無、邏輯的真假…等等多半是兩個狀態之一。承上所述二進制記數只有兩個數字符號 0 和 1 ,將一個位置稱作一個位元 bit,通常最小的位置單元為八位元,稱為一個位元組 byte,一個位元組能表達的最大數值是︰

11111111 =  2^7 + 2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2 + 1 = 255

由於二進制記數需要很長的 1 和 0 符號串,表達大的數時並不方便,於是有了十六進制的出現,在 0、1、2、3、4、5、6、7、8、9 之外加上 A、B、C、D、E、F 代表 10、11、12、13、14、15 一共十六個數字符號用於記數,比方說︰

FFFF =  15 * 16^3 + 15 * 16^2 + 15 * 16 + 15 代表 65535 這個數 。

最後回到數量級的概念,一般在科技上用 K 代表 10 的三次方   10^3 、M = KK 是10 的六次方  10^6 、G = KM 是10 的九次方  10^9 、T = KG  是10 的十二次方 10^{12} 。電腦上也使用這些數量級符號,只不過 K 不是取 1000 而是取 2 的 十次方1024。也就是說二進制使用的 1 K 比十進制的大了 2.4%,1 M 大了約 4.9%, 1 G 大了約 7.4%,1 T 大了約 10%。然而某些電腦儲存裝置、媒體廠商卻故意混亂數量級的用法,以少報多不實的標記容量大小。