歡迎來到二進制的世界!

你有沒有想過,電腦、智能手機和遊戲機內部明明只是一堆電子電路,到底是如何播放影片、運行 3D 遊戲和傳送訊息的呢?當中的秘密,就在於一種名為二進制(binary)的特別記數系統。

在這份溫習筆記中,你將會認識什麼是二進制數字、為什麼電腦需要依賴二進制,以及如何將我們日常使用的數字與電腦的二進制代碼互相轉換。即使一開始覺得陌生或有點複雜也不用擔心——只要掌握幾個簡單步驟和位值表,你很快就能運用自如!

為什麼電腦要使用二進制?

人類日常使用的是十進制(decimal / denary / base-10),當中包含十個數字:\(0, 1, 2, 3, 4, 5, 6, 7, 8\) 和 \(9\)。我們很大機會是因為有十隻手指,所以發明了十進制!

然而,電腦並沒有手指。在電腦處理器內部,有數以百萬計微小的電子開關,稱為電晶體(transistors)。這些開關在物理上只能處於兩種通電狀態之一:
開啟(ON):高電壓電流通過(以數字 \(1\) 代表)
關閉(OFF):低電壓或無電流通過(以數字 \(0\) 代表)

正因為這些開關只能處於開啟關閉狀態,電腦在進行所有思考、運算和儲存時,都只會使用兩個數字:\(0\) 和 \(1\)。這個只有兩個數字的系統就稱為二進制(binary / base-2)

重點提示:電腦之所以使用二進制,是因為其內部的電子開關永遠只有兩種狀態:開啟(ON)(\(1\))或關閉(OFF)(\(0\))。

---

位元(Bit)、半字節(Nibble)與字節(Byte):數據的基本單位

在開始轉換數字之前,我們先來認識電腦記憶體的基本單位:

位元(Bit):Binary digit(二進制數位)的縮寫。位元是電腦運算中最小的單一數據單位,它的值只能是 \(0\) 或 \(1\)。
半字節(Nibble):由 \(4\) 個位元組成的一組數據(例如:01011111)。一個半字節可以表示由 \(0\) 至 \(15\) 的數字。
字節(Byte):由 \(8\) 個位元組成的一組數據(例如:0010110111111111)。字節是初中(Key Stage 3)階段用來表示數字和字符的標準單位。一個字節可以表示由 \(0\) 至 \(255\) 的數字。

記憶小貼士:不妨把「nibble」(半字節)想像成輕輕咬一口(nibble)數據,而「byte」(字節)就是吞下一整大口(bite)由 \(8\) 個位元組成的數據!

重點提示:\(1\) 字節(Byte)= \(2\) 半字節(Nibbles)= \(8\) 位元(Bits)。

---

位值(Place Values):十進制 vs 二進制

在十進制中,位值從右至左移動時每次乘以 \(10\):個位(\(10^0 = 1\))、十位(\(10^1 = 10\))、百位(\(10^2 = 100\))、千位(\(10^3 = 1000\))。

在二進制中,位值從右至左移動時則是每次乘以 \(2\)(翻倍):

8 位元二進制位值表:
\(128\) (\(2^7\)) | \(64\) (\(2^6\)) | \(32\) (\(2^5\)) | \(16\) (\(2^4\)) | \(8\) (\(2^3\)) | \(4\) (\(2^2\)) | \(2\) (\(2^1\)) | \(1\) (\(2^0\))

實用秘訣:在解答任何進制轉換題目之前,最好先在草稿紙頂部畫出這個 8 欄位值表。從最右邊寫上 \(1\),然後向左不斷翻倍:\(1 \rightarrow 2 \rightarrow 4 \rightarrow 8 \rightarrow 16 \rightarrow 32 \rightarrow 64 \rightarrow 128\)。

---

將二進制轉換為十進制

把二進制數字轉換為常見的十進制數字非常簡單!只需跟隨以下三個步驟:

步驟 1:寫出 8 位元位值表(\(128, 64, 32, 16, 8, 4, 2, 1\))。
步驟 2:將二進制數字順序填寫在對應的欄位下方。
步驟 3:將下方寫有 \(1\) 的所有欄位位值相加,並忽略下方寫有 \(0\) 的欄位。

範例一

將二進制數字 00101101 轉換為十進制:

• 欄位 \(128\):\(0\)
• 欄位 \(64\):\(0\)
• 欄位 \(32\):\(1\) \(\rightarrow\) \(32\)
• 欄位 \(16\):\(0\)
• 欄位 \(8\):\(1\) \(\rightarrow\) \(8\)
• 欄位 \(4\):\(1\) \(\rightarrow\) \(4\)
• 欄位 \(2\):\(0\)
• 欄位 \(1\):\(1\) \(\rightarrow\) \(1\)

現在將這些數值相加:
\(32 + 8 + 4 + 1 = \mathbf{45}\)
因此,二進制 00101101 的十進制數值是 \(45\)

範例二

將二進制數字 10000110 轉換為十進制:

找出下方寫有 \(1\) 的欄位:
• \(128\) 欄位有 \(1\)
• \(4\) 欄位有 \(1\)
• \(2\) 欄位有 \(1\)

計算:\(128 + 4 + 2 = \mathbf{134}\)
因此,二進制 10000110 的十進制數值是 \(134\)

重點提示:如果欄位下方是 \(1\),代表開關處於開啟狀態(將該欄位值相加);如果是 \(0\),代表開關關閉(忽略該欄位值)。

---

將十進制轉換為二進制

要把十進制數字轉換為 8 位元二進制數字,我們會使用減法法則(嚴格由左至右進行,由 \(128\) 遞減至 \(1\))。

分步減法法則:

由左至右處理每一個欄位:
1. 目前的數字能否減去該欄位值而不會變成負數?(即目前的數字是否 \(\ge\) 欄位值?)
2. 如果可以:在該欄位填上 \(1\),並從目前的數字中減去該欄位值。
3. 如果不可以:在該欄位填上 \(0\),目前的數字保持不變。
4. 重複以上步驟處理全部 8 個欄位,直至完成 \(1\) 的欄位為止。

範例:將 84 轉換為 8 位元二進制字節

我們由目標數字開始:\(84\)

• \(84 \ge 128\) 嗎? \(\rightarrow\) 填 \(0\)(餘數保持 \(84\))
• \(84 \ge 64\) 嗎? \(\rightarrow\) 填 \(1\)(減法:\(84 - 64 = 20\))
• \(20 \ge 32\) 嗎? \(\rightarrow\) 填 \(0\)(餘數保持 \(20\))
• \(20 \ge 16\) 嗎? \(\rightarrow\) 填 \(1\)(減法:\(20 - 16 = 4\))
• \(4 \ge 8\) 嗎? \(\rightarrow\) 填 \(0\)(餘數保持 \(4\))
• \(4 \ge 4\) 嗎? \(\rightarrow\) 填 \(1\)(減法:\(4 - 4 = 0\))
• \(0 \ge 2\) 嗎? \(\rightarrow\) 填 \(0\)(餘數保持 \(0\))
• \(0 \ge 1\) 嗎? \(\rightarrow\) 填 \(0\)(餘數保持 \(0\))

由左至右讀取這些位元,得出:01010100
因此,十進制 \(84\) 轉換為 8 位元二進制就是 \(01010100\)

重點提示:記緊由左至右依序檢查每個欄位。一旦餘數變成 \(0\),右邊所有剩餘的欄位都直接填上 \(0\)。

---

重要特性與實用規律

以下是一些實用的規則和規律,能幫助你快速檢查答案:

1. 最大數值

對於任何位元數量(\(n\)),所能表示的最大數值為 \(2^n - 1\):
• 對於 4 位元半字節(\(n = 4\)):最大值為 \(2^4 - 1 = 16 - 1 = \mathbf{15}\)(二進制 1111)。
• 對於 8 位元字節(\(n = 8\)):最大值為 \(2^8 - 1 = 256 - 1 = \mathbf{255}\)(二進制 11111111)。

2. 獨立狀態總數

一組 \(n\) 個位元可以產生 \(2^n\) 種不同組合。
對於一個 8 位元字節,共有 \(2^8 = 256\) 種不同組合(足以表示由 \(0\) 至 \(255\) 的所有整數)。

3. 快速奇偶檢查法

觀察最右邊的最後一個數位(即 \(1\) 欄位,又稱為最低有效位元 Least Significant Bit):
• 如果結尾是 \(1\),該十進制數字就是奇數(單數)(例如:\(00000101 = 4 + 1 = 5\))。
• 如果結尾是 \(0\),該十進制數字就是偶數(雙數)(例如:\(00000110 = 4 + 2 = 6\))。
為什麼?因為其他所有欄位值(\(128, 64, 32, 16, 8, 4, 2\))都是偶數,要得出奇數總和,唯一的辦法就是加上最後的 \(1\)!

---

常見錯誤陷阱

位值方向顛倒:切勿由左至右寫成 \(1, 2, 4, 8 \dots\)。最小值(\(1\))必須永遠在最右邊,就像日常數學中的個位一樣!
漏寫前置零(Leading Zeros):如果題目要求寫出一個 8 位元二進制數字或一個完整的字節,請確保寫齊全部 \(8\) 個數位。例如將十進制 \(5\) 寫成 00000101,而非單純寫成 101
混淆進制概念:不要把二進制的 10 讀成十進制的「十」。在二進制中,10 代表一個 \(2\) 和零個 \(1\),其實等於十進制的 \(2\)
誤加零欄位:計算時要小心,只相加下方有 \(1\) 的位值,切勿把下方是 \(0\) 的欄位值也加進去。
減法計算出錯:在進行十進制轉二進制的減法時要保持專注,避免因為心算失誤而扣分。

---

快速溫習總結

十進制(Decimal / Denary / Base-10):使用數字 \(0\) 至 \(9\);位值為 \(10\) 的次方。
二進制(Binary / Base-2):使用數字 \(0\) 和 \(1\);位值為 \(2\) 的次方(\(128, 64, 32, 16, 8, 4, 2, 1\))。
1 位元(Bit) = 單一的 \(0\) 或 \(1\)。1 半字節(Nibble) = \(4\) 位元。1 字節(Byte) = \(8\) 位元。
二進制轉十進制:畫出位值表,填入數位,將下方有 \(1\) 的欄位值相加。
十進制轉二進制:由左至右與欄位值比對,若足夠減去則填 \(1\) 並減去該值,否則填 \(0\)。
8 位元字節的表示範圍:可表示 \(256\) 個數值,範圍由 \(0\)(00000000)至 \(255\)(11111111)。