歡迎來到數制的世界!
你好!這一章是理解電腦如何儲存和處理所有數據的基礎,從你最喜歡的照片到遊戲中的指令,一切都與我們如何「計算」有關!
我們每天都在使用十進制(Denary),但電腦需要一個更簡單的系統,基於電力「開啟」(ON)或「關閉」(OFF)的狀態。這就是二進制(Binary)和十六進制(Hexadecimal)登場的時候了。
如果起初覺得有點複雜,不用擔心! 我們會用簡單的比喻來拆解這些概念,確保你能掌握這些基本技能。讓我們開始吧!
為什麼電腦使用不同的數制?(數據表示的背景)
你使用十進制(基數 10)是因為你有十根手指。然而,電腦是由電子開關組成的。這些開關只能處於兩種狀態之一:
- ON(代表電流正在流動)
- OFF(代表電流沒有流動)
這種開關系統非常適合二進制,它只使用兩個數字:1 和 0。
1. 十進制 (Denary, Base 10):我們熟悉的系統
十進制是你每天都在使用的數字系統。它也被稱為基數 10,因為它使用了 10 個不同的數字(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)。
理解位值 (Place Value)
在十進制中,數字的位置決定了它的價值。這些位置是 10 的冪次:
例子:數字 345
- 5 位於 \(10^0\)(個位)欄位 = \(5 \times 1\) = 5
- 4 位於 \(10^1\)(十位)欄位 = \(4 \times 10\) = 40
- 3 位於 \(10^2\)(百位)欄位 = \(3 \times 100\) = 300
十進制只是起點,但理解這裡的「位值」對於理解二進制至關重要!
2. 二進制 (Binary, Base 2):電腦的語言
二進制是電腦使用的數字系統。它被稱為基數 2,因為它只使用兩個數字:0 和 1。
- 單個二進制數字(0 或 1)被稱為位元(Bit,Binary Digit 的簡寫)。
- 八個位元組合成一個位元組(Byte)。
二進制位值
就像十進制使用 10 的冪次一樣,二進制使用 2 的冪次。為了標準數據表示,我們通常使用 8 個位元(即一個位元組)。
8 位元二進制數的位值如下:
\(2^7\), \(2^6\), \(2^5\), \(2^4\), \(2^3\), \(2^2\), \(2^1\), \(2^0\)
計算後,得到的權重為:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
快速複習:每個 1 代表開關為 ON(該值被計入)。每個 0 代表開關為 OFF(該值被忽略)。
3. 二進制轉十進制
這通常是最簡單的轉換!我們只需使用剛才學過的位值欄位。
轉換步驟:二進制轉十進制
目標:將二進制數 10110010 轉換為十進制。
- 寫出 8 位元的位值(權重):
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
- 將二進制數寫在下方:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 - 找出標記為 '1' 的欄位(即「ON」的開關):
128, 32, 16 和 2
- 將這些數值相加:
\(128 + 32 + 16 + 2 = 178\)
- 給出最終答案:
10110010 的十進制等價數是 178。
關鍵點:二進制轉十進制就是將所有出現 '1' 的位置的位值相加。
4. 十進制轉二進制
這種轉換需要找出組成十進制數字所需的 2 的冪次(即哪些欄位需要開啟)。我們使用減法法。
轉換步驟:十進制轉二進制
目標:將十進制數 210 轉換為二進制。
- 從最大的可能位值(128)開始:
210 可以減去 128 嗎?可以。
210 - 128 = 82
結果:在 128 欄位下方填入 1。 - 移至下一個欄位(64):
剩餘的 82 可以減去 64 嗎?可以。
82 - 64 = 18
結果:在 64 欄位下方填入 1。 - 繼續處理後續欄位:
- 32:18 可以減去 32 嗎?不行。(填入 0)
- 16:18 可以減去 16 嗎?可以。18 - 16 = 2(填入 1)
- 8:2 可以減去 8 嗎?不行。(填入 0)
- 4:2 可以減去 4 嗎?不行。(填入 0)
- 2:2 可以減去 2 嗎?可以。2 - 2 = 0(填入 1)
- 1:剩餘數值為 0。(填入 0)
- 讀取最終的二進制代碼:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
1 | 1 | 0 | 1 | 0 | 0 | 1 | 0
210 的二進制等價數是 11010010。
常見錯誤提示:確保你每次減法都是與*剩餘*的數值進行對比,而不是原來的數字!
5. 十六進制 (Hexadecimal, Base 16):簡記法
二進制對電腦很友好,但長串的 1 和 0 對人類來說難以閱讀、書寫和記憶,且容易出錯!
十六進制(或稱 Hex)被用作一種捷徑。它是基數 16,因為它使用 16 個唯一的字符。
16 個十六進制數字
十六進制使用 0 到 9 的數字,加上 A 到 F 的字母來代表 10 到 15 的數值:
| 十六進制位 | 十進制數值 | 二進制數值(4 位元) |
|---|---|---|
| 0 | 0 | 0000 |
| ... | ... | ... |
| 9 | 9 | 1001 |
| A | 10 | 1010 |
| B | 11 | 1011 |
| C | 12 | 1100 |
| D | 13 | 1101 |
| E | 14 | 1110 |
| F | 15 | 1111 |
你知道嗎? 十六進制在處理記憶體地址、錯誤代碼和定義顏色(例如網頁顏色 #FF0000 代表純紅色)時非常常見。
6. 二進制與十六進制之間的轉換
十六進制的妙處在於,一個十六進制位剛好可以完美代表四個二進制位(稱為半位元組,Nibble)。
由於一個位元組(Byte)是 8 個位元,所以兩個十六進制位正好可以代表一個位元組。
A) 二進制轉十六進制
目標:將二進制數 11011001 轉換為十六進制。
- 從右側開始,將二進制數分成每四位一組(半位元組):
1101 | 1001
- 將每組半位元組轉換為十進制:
- 第 1 組 (1101): \(8 + 4 + 0 + 1 = 13\)
- 第 2 組 (1001): \(8 + 0 + 0 + 1 = 9\)
- 將十進制數值轉換為十六進制對應值:
- 十六進制的 13 是 D
- 十六進制的 9 是 9
- 組合十六進制位:
11011001 的十六進制等價數是 D9。
B) 十六進制轉二進制
這是相反的過程:將每個十六進制位寫出其對應的四位二進制代碼。
目標:將十六進制數 A5 轉換為二進制。
- 處理第一個位(A):
A 在十進制中等於 10。10 的 4 位元二進制是 1010。
- 處理第二個位(5):
5 在十進制中等於 5。5 的 4 位元二進制是 0101。
- 組合這兩組四位二進制:
A5 的二進制等價數是 10100101。
C) 十進制轉十六進制
將十進制轉換為十六進制(反之亦然)最簡單的方法是以二進制作為中間步驟。這樣可以簡化計算方法並減少錯誤。
例子:將十進制 150 轉換為十六進制:
- 十進制 150 -> 二進制: 使用減法法,得到 10010110。
- 二進制 10010110 -> 十六進制: 分成半位元組:1001 和 0110。
- 1001 是 9。0110 是 6。
- 結果:96(十六進制)。
數制快速複習
三種數制
- 十進制 (Base 10): 數字 0-9。人類使用。位值是 10 的冪次(1, 10, 100...)。
- 二進制 (Base 2): 數字 0, 1。電腦使用。位值是 2 的冪次(1, 2, 4, 8...)。
- 十六進制 (Base 16): 數字 0-9 和 A-F。作為人類可讀的二進制簡記法。
記憶小撇步:十六進制字母
記住 'F' 是單個十六進制位中最大的(十進制為 15,或二進制為 1111)。
恭喜你!你已經掌握了數據表示的基本工具。請多加練習這些轉換——這可是考試中極為關鍵的技能!