如何在不同進位制度之間進行轉換
寫程式、算作業常會碰到二進制、八進制、十進制、十六進制之間的轉換。方法其實只有一套,這篇文章把它講清楚,再附上二進制與十六進制之間的速算技巧。
什麼是進位制度?
進位制度是一種表示數字的方式,它使用一個基數(或基底)來決定每個位置的值。基數是一個固定的數字,表示每個位置可以容納的不同數字的數量。例如,十進制使用基數 10,表示每個位置可以容納 0 到 9 的 10 個數字。二進制使用基數 2,表示每個位置只能容納 0 或 1 的 2 個數字。八進制使用基數 8,表示每個位置可以容納 0 到 7 的 8 個數字。十六進制使用基數 16,表示每個位置可以容納 0 到 9 以及 A 到 F 的 16 個數字。
| 進位制度 | 基數 | 可容納的數字 |
|---|---|---|
| 十進制 | 10 | 0 到 9 |
| 二進制 | 2 | 0 或 1 |
| 八進制 | 8 | 0 到 7 |
| 十六進制 | 16 | 0 到 9 和 A 到 F |
親手玩玩看:點擊下面的位元切換 0 和 1,看看十進位、十六進位、八進位的值怎麼跟著變。每四個位元剛好對應一個十六進位數字。
128
64
32
16
十六進位
B
8
4
2
1
十六進位
6
十進位
182
十六進位
B6
八進位
266
通用的進位轉換方法
要將一個進位制度中的數字轉換為另一個進位制度中的數字,我們可以使用以下的通用方法,它包括以下五個步驟:
- 先把來源數字轉成十進位:把每個位數乘上「來源基數的位置次方」再全部相加。例如八進位 352 就是 3×8² + 5×8¹ + 2×8⁰。
- 再把得到的十進位數字轉成目標進位:不斷除以目標基數並記下餘數,直到商為 0,最後把餘數由後往前讀,就是答案。
轉換示例
用八進位的 352 轉十進位來走一遍第一步:
- 將數字 352 按位數分解:3、5 和 2。
- 每個位數乘上對應的 8 的次方:3×8² + 5×8¹ + 2×8⁰ = 192 + 40 + 2 = 234。
- 得到結果:352(八進位)= 234(十進位)。
常見問題
Q: 如何將十進制轉換為其他進位制度?
A: 要將十進制轉換為其他進位制度,我們可以使用除法和取餘數的方法。這個方法包括以下步驟:
- 將十進制數字除以目標進位制度的基數,並記下餘數。
- 將商再除以目標進位制度的基數,並記下餘數。
- 重複這個過程,直到商為零。
- 將所有的餘數從右到左排列,得到轉換後的數字。
例如,要將十進制的數字 234 轉換為八進制的數字,我們可以按照以下步驟進行:
- 234 / 8 = 29 ... 2
- 29 / 8 = 3 ... 5
- 3 / 8 = 0 ... 3
- 將餘數從右到左排列,得到 352(八進制)。
Q: 如何將二進制轉換為十六進制,或反之?
A: 要將二進制轉換為十六進制,或反之,我們可以使用分組和對應的方法。這個方法包括以下步驟:
- 將二進制數字按每四位一組進行分組,從右邊開始。如果最左邊的組不足四位,則在前面補零。
- 將每一組二進制數字對應到一個十六進制數字,根據下表進行轉換。
- 將所有的十六進制數字連接起來,得到轉換後的數字。
| 二進制 | 十六進制 |
|---|---|
| 0000 | 0 |
| 0001 | 1 |
| 0010 | 2 |
| 0011 | 3 |
| 0100 | 4 |
| 0101 | 5 |
| 0110 | 6 |
| 0111 | 7 |
| 1000 | 8 |
| 1001 | 9 |
| 1010 | A |
| 1011 | B |
| 1100 | C |
| 1101 | D |
| 1110 | E |
| 1111 | F |
例如,要將二進制的數字 10110110 轉換為十六進制的數字,我們可以按照以下步驟進行:
- 將二進制數字 10110110 按每四位一組進行分組,從右邊開始:1011 0110。如果最左邊的組不足四位,在前面補零即可。
- 將每一組二進制數字對應到一個十六進制數字,根據下表進行轉換:1011 -> B,0110 -> 6。
- 將所有的十六進制數字連接起來,得到轉換後的數字:B6(十六進制)。
要將十六進制轉換為二進制,我們可以反過來執行這個方法,即:
- 將十六進制數字按每一位進行分解,例如:B6 -> B 和 6。
- 將每一位十六進制數字對應到一組四位的二進制數字,根據下表進行轉換:B -> 1011,6 -> 0110。
- 將所有的二進制數字連接起來,得到轉換後的數字:1011 0110(二進制)。如果需要,可以去掉前面的零。