歡迎來到數字轉換的世界!
在計算機科學中,我們經常需要使用計算機的「母語」與其溝通。雖然我們平時習慣使用十進制(Decimal,以 10 為基數),但計算機只讀得懂二進制(Binary,以 2 為基數),而程式設計師則常使用十六進制(Hexadecimal,以 16 為基數)作為簡寫。在本章中,你將學會如何成為一名「數字翻譯官」,在三個系統之間輕鬆切換。
別擔心,剛開始看起來可能覺得「數學味」很重! 一旦你掌握了簡單的規律和技巧,這就會像照著食譜做菜一樣簡單。我們將聚焦於 0 到 255 之間的數字,這正好是一個位元組(byte,即 8 位元)所能表示的範圍。
1. 前提知識:了解你的進位制
在進行轉換之前,我們先快速重溫一下這三個進位系統:
- 十進制(Decimal,基數 10): 使用 0-9 的數字。這就是你每天都在使用的系統。
- 二進制(Binary,基數 2): 只使用 0 和 1。
- 十六進制(Hexadecimal,基數 16): 使用 0-9,隨後用字母 A 到 F 來表示 10 到 15。
十六進制速查表:
A = 10 | B = 11 | C = 12 | D = 13 | E = 14 | F = 15
2. 將二進制轉換為十進制
最簡單的方法是使用位值表(place value table)。由於我們處理的是 8 位元二進制,我們畫一個有 8 欄的表格,從右邊的 1 開始,向左移動時數值加倍。
步驟流程:
- 畫出你的表格:128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
- 在表格下方寫入二進制數字。
- 將所有下方對應為 1 的數值相加。
範例:將 10101000 轉換為十進制
128(1) + 64(0) + 32(1) + 16(0) + 8(1) + 4(0) + 2(0) + 1(0)
計算:\( 128 + 32 + 8 = 168 \)
結果:168
重點提示: 只要將對應位值為 1 的位置「開啟」,然後忽略 0 就行了!
3. 將十進制轉換為二進制
把它想像成一個「貪心」遊戲。你需要看看哪些二進制位值(128, 64 等)可以放入你的十進制數字中。
步驟流程:
- 從 8 位元表格開始:128, 64, 32, 16, 8, 4, 2, 1。
- 從左邊 (128) 開始問自己:「我的數字是否大於或等於這個位值?」
- 如果是:寫下 1,並從你的總數中減去該數值。
- 如果否:寫下 0 並移動到下一欄。
範例:將 75 轉換為二進制
- 128 能放入 75 嗎?不能。(0)
- 64 能放入 75 嗎?能。(1)。剩餘:\( 75 - 64 = 11 \)
- 32 能放入 11 嗎?不能。(0)
- 16 能放入 11 嗎?不能。(0)
- 8 能放入 11 嗎?能。(1)。剩餘:\( 11 - 8 = 3 \)
- 4 能放入 3 嗎?不能。(0)
- 2 能放入 3 嗎?能。(1)。剩餘:\( 3 - 2 = 1 \)
- 1 能放入 1 嗎?能。(1)。剩餘:0
結果:01001011
常見錯誤: 忘了寫 0!8 位元二進制數字必須有 8 位數,即使最前面的是 0 也要寫出來。
4. 二進制與十六進制:「半字節(Nibble)」技巧
十六進制看起來很可怕,但有一個秘密捷徑!一個十六進制數字剛好代表 4 個位元(即一個半字節,nibble)。
將二進制轉換為十六進制:
- 將你的 8 位元二進制數字分成兩個 4 位元的部份(半字節)。
- 將每個 4 位元部份轉換為十進制(數值 0-15)。
- 將任何 10-15 的數字轉換成正確的十六進制字母(A-F)。
範例:將 11010011 轉換為十六進制
左半字節:1101 → \( 8+4+1 = 13 \)。在十六進制中,13 是 D。
右半字節:0011 → \( 2+1 = 3 \)。在十六進制中,3 是 3。
結果:D3
將十六進制轉換為二進制:
- 將每個十六進制數字分開處理。
- 將其轉換為 4 位元的二進制數字。
- 把它們接在一起。
範例:將 2F 轉換為二進制
2 → 0010
F (15) → 1111
結果:00101111
你知道嗎? 程式設計師使用十六進制是因為它比二進制短得多。寫「FF」比寫「11111111」容易閱讀多了!
5. 將十六進制轉換為十進制
對於 AQA 8525 課程大綱,你只需要處理到 FF (255)。這意味著你永遠只需要處理兩個十六進制數字。
步驟流程:
- 右邊的數字是「個位」(乘以 1)。
- 左邊的數字是「十六位」(乘以 16)。
- 將它們相乘並相加。
範例:將 3B 轉換為十進制
- 左邊數字:3。計算:\( 3 \times 16 = 48 \)
- 右邊數字:B (11)。計算:\( 11 \times 1 = 11 \)
- 相加:\( 48 + 11 = 59 \)
結果:59
6. 將十進制轉換為十六進制
有兩種方法。你可以走「十進制 → 二進制 → 十六進制」(使用半字節技巧),或者使用除法。
除法法:
- 將你的十進制數字除以 16。
- 商數就是你的左側十六進制數字。
- 餘數就是你的右側十六進制數字。
範例:將 162 轉換為十六進制
- \( 162 \div 16 = 10 \)。(10 在十六進制中是 A)。
- 餘數是 2。(2 在十六進制中是 2)。
結果:A2
速查小框:
- 二進制位值:128, 64, 32, 16, 8, 4, 2, 1
- 十六進制位值:16, 1
- 8 位元/2 位數十六進制的最大值:255 (FF)
總結:我該用哪種方法?
- 二進制 ↔ 十進制: 使用 128...1 的表格。
- 二進制 ↔ 十六進制: 分成 4 位元的半字節。這是最快的方法!
- 十六進制 ↔ 十進制: 使用「乘以/除以 16」的方法,如果你覺得方便,也可以先轉換為二進制。
小秘訣: 一定要反覆檢查你的加法!大多數失分都是因為簡單的計算錯誤,而不是因為不懂運算流程。