二進位資料表示法

二進位資料表示法

電腦內以二進位表達所有資料, 因為表達兩個狀態的電子元件很容易製作, 加減乘除的運算也很容易用電子元件來製作, 錯誤機率很低 (0 誤以為 1 或是 1 誤以為 0)。

我們將其中一個狀態 (例如: 5 Volt)視為`1`, 另一個狀態 (例如: 0 Volt) 視為`0`。 實際世界中所有的資料都以二進位來表示, 例如整數我們可以由 10 進位轉為 2 進位, 負整數可以用一個位元來表示正負號, 或是用 2 的補數法來表示, 字元可以把它們編號後儲存它們的代號 (例如英文字母用 ASCII 碼, 中文字元用 BIG5 碼), 實數我們用近似的浮點表示法來表示, 聲音我們用音波振幅的一連串實數來近似, 影像我們用格子點上的亮度及顏色來近似, 這些數字再以適當的二進位來表示, 空間中物體的形狀以其表面點集合之座標來表示, 可數的狀態以整數來表示 (例如紅綠燈的三個狀態可以用 1/2/3 來表示, 天氣的陰晴雨同樣可以用整數表示....), 不可數的狀態以實數來表示 (例如車速每小時若干公里, 雨量每日多少公厘,....) 講穿了其實日常生活中抽象的事物也好, 實体的事物也好, 只要能夠"量化"的東西都可以在電腦中用二進位表達, 當然還有一些事物是定性的, 無法量化的, 除非先將其量化, (例如:好看的程度、心情好壞的程度....), 否則這些很難用電腦來表達。

為什麼電腦不像人一樣用十進位來表達資料呢?

直接的理由是:

深入一點來看: 為什麼電子元件或是磁性元件不設計表達三個狀態, 四個狀態甚至十個狀態的呢?

表面上的理由可以說, 狀態愈多, 錯誤的機會愈高, (例如:0 到 5 伏特電壓分為 2 個狀態時可以說 2.5 伏特以上是`1`, 以下是`0`, 若是分為 5 個狀態的話, 必須是 1 伏特以下是 `0`, 1 伏特到 2 伏特是 `1`.... 4 伏特以上是 `4`, 每一個區間範圍只剩下 1 伏特, 萬一物理條件例如溫度、電場、磁場稍微改變, 只要變化超過 1 伏特, 狀態就改變了)。 實際上要設計儲存及運算十個狀態的電路並不容易, 除非技術上或是材料上有突破性的進展, 否則目前以多個二個狀態的電子元件組合起來 處理十進位等效運算的經濟效益仍然較高。

趨勢:

大家如果有注意的話, 可能會知道為了節省能源、 適應電池電壓、 降低電阻放熱、 及增快操作速度, IC 的操作電壓已經由十幾年前的 ±12 伏特及 ±5 伏特降到現在的 3.3 或 2.8 伏特。 這至少表示說現在電子材料可以穩定快速地在 error margin 1-2 伏特的情形下操作, 若是有新的發明能夠使用和二進位加減乘除 同樣複雜度的電路來完成十進位的運算, 也許電腦內就可以採用十進位, 甚至一百進位來計算了。

當你自己模擬計算機來做二進位運算時, 你會不會覺得又臭又長的很煩, 這就對了!! 這是為什麼人類用 10 進位來運算, 我們可以很清楚地分辨及記憶 0 到 9 這十個符號, 還可以記住這十個符號乘積的運算。

二進位簡單, 但並不是有效率的運算與儲存的方式。 假設有人發明了一百個符號代表 0 到 99, 同時這一百個符號加減乘除的運算和這一百個符號一樣都可以很簡單的記憶, 那麼大家心算的能力馬上就加強了十倍, 也許這是另一個星球上生物的基本能力呢!!

如何使用 printf() 標準輸入函式
程式設計課程 首頁
by Pei-yih Ting
E-mail: pyting@cs.ntou.edu.tw