歡迎來到數字轉換的世界!

在計算機科學中,我們經常需要使用計算機的「母語」與其溝通。雖然我們平時習慣使用十進制(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 開始,向左移動時數值加倍。

步驟流程:

  1. 畫出你的表格:128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
  2. 在表格下方寫入二進制數字。
  3. 將所有下方對應為 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 等)可以放入你的十進制數字中。

步驟流程:

  1. 從 8 位元表格開始:128, 64, 32, 16, 8, 4, 2, 1
  2. 從左邊 (128) 開始問自己:「我的數字是否大於或等於這個位值?」
  3. 如果:寫下 1,並從你的總數中減去該數值。
  4. 如果:寫下 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)。

將二進制轉換為十六進制:

  1. 將你的 8 位元二進制數字分成兩個 4 位元的部份(半字節)。
  2. 將每個 4 位元部份轉換為十進制(數值 0-15)。
  3. 將任何 10-15 的數字轉換成正確的十六進制字母(A-F)。

範例:將 11010011 轉換為十六進制

左半字節:1101 → \( 8+4+1 = 13 \)。在十六進制中,13 是 D
右半字節:0011 → \( 2+1 = 3 \)。在十六進制中,3 是 3
結果:D3

將十六進制轉換為二進制:

  1. 將每個十六進制數字分開處理。
  2. 將其轉換為 4 位元的二進制數字。
  3. 把它們接在一起。

範例:將 2F 轉換為二進制

2 → 0010
F (15) → 1111
結果:00101111

你知道嗎? 程式設計師使用十六進制是因為它比二進制短得多。寫「FF」比寫「11111111」容易閱讀多了!


5. 將十六進制轉換為十進制

對於 AQA 8525 課程大綱,你只需要處理到 FF (255)。這意味著你永遠只需要處理兩個十六進制數字。

步驟流程:

  1. 右邊的數字是「個位」(乘以 1)。
  2. 左邊的數字是「十六位」(乘以 16)。
  3. 將它們相乘並相加。

範例:將 3B 轉換為十進制

  1. 左邊數字:3。計算:\( 3 \times 16 = 48 \)
  2. 右邊數字:B (11)。計算:\( 11 \times 1 = 11 \)
  3. 相加:\( 48 + 11 = 59 \)

結果:59


6. 將十進制轉換為十六進制

有兩種方法。你可以走「十進制 → 二進制 → 十六進制」(使用半字節技巧),或者使用除法。

除法法:

  1. 將你的十進制數字除以 16。
  2. 商數就是你的左側十六進制數字。
  3. 餘數就是你的右側十六進制數字。

範例:將 162 轉換為十六進制

  1. \( 162 \div 16 = 10 \)。(10 在十六進制中是 A)。
  2. 餘數是 2。(2 在十六進制中是 2)。

結果:A2

速查小框:
- 二進制位值:128, 64, 32, 16, 8, 4, 2, 1
- 十六進制位值:16, 1
- 8 位元/2 位數十六進制的最大值:255 (FF)


總結:我該用哪種方法?

- 二進制 ↔ 十進制: 使用 128...1 的表格。
- 二進制 ↔ 十六進制: 分成 4 位元的半字節。這是最快的方法!
- 十六進制 ↔ 十進制: 使用「乘以/除以 16」的方法,如果你覺得方便,也可以先轉換為二進制。

小秘訣: 一定要反覆檢查你的加法!大多數失分都是因為簡單的計算錯誤,而不是因為不懂運算流程。