二、八、十與十六進位(數字系統)轉換教學

進位(數字系統)

二進位(Binary,bin)

  • 基數為 2 的系統,逢 2 進位
  • 數字符號:0, 1

八進位(Octal,oct)

  • 基數 8 的系統,逢 8 進位
  • 數字符號:0, 1, 2, 3, 4, 5, 6, 7

十進位(Decimal,dec)

  • 基數 10 的系統,逢 10 進位
  • 數字符號:0, 1, 2, 3, 4, 5, 6, 7, 8, 9

十六進位(Hexadecimal,hex)

  • 基數 16 的系統,逢 16 進位
  • 數字符號:0, 1, 2, 3, 4, 5, 6, 7, 8, 9 與 10 → A, 11 → B, 12 → C, 13 → D, 14 → E, 15 → F

對照表

十進位二進位八進位十六進位
 00000 00
 10001 11
 20010 22
 30011 33
 40100 44
 50101 55
 60110 66
 70111 77
 81000108
 91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F

有效位

最高有效位(Most Significant Bit,MSB),表示最左邊的位元 → 1010

最低有效位(Least Significant Bit,LSB),表示最右邊的位元 → 1010

進位(數字系統)轉換規則

十進位轉換成其他進位

整數 → 除法

  • 將(十進位『整數』/『欲轉換進位數』),一直除到商數為 0,再依序『由下往上』取出餘數

小數 → 乘法

  • 將(十進位『小數』*『欲轉換進位數』),一直乘到小數為 0,再依序『由上往下』取出整數

其他進位轉換成十進位

以二進位為例:1101.101(2)

整數 → 乘法

  • 以小數點為中心,『由右至左』累加次方,在依(數字 *『欲轉換進位數』次方
  • 1101 → 13120110 → (1 * 23) + (1 * 22) + (0 * 21) + (1 * 20)

小數 → 乘法

  • 以小數點為中心,『由左至右』累加負次方,在依(數字 *『欲轉換進位數』負次方
  • .101 → 1-10-21-3 → (1 * 2-1) + (0 * 2-2) + (1 * 2-3)

次方計算常見問題

  • 0 * 2 = 00 * 任何數都等於 0
  • 20 = 1,任何底數的 0 次方都等於 1
  • 22 = 2 * 2,多少次方則依此類推
  • 2-2 = 1/(2 * 2) = 0.25,多少次方則依此類推

進位(數字系統)轉換

二進位與十進位的轉換

十進位 → 二進位
範例計算公式
12(10) = 1100(2)
12 / 2 = 6 餘數 0 ↑ => 1100

(2)

 6 / 2 = 3 餘數 0 |
 3 / 2 = 1 餘數 1 |
 1 / 2 = 0 餘數 1 |
15.625(10) = 1111.101(2)整數部份

15 / 2 = 7 餘數 1 ↑ => 1111

(2)

 7 / 2 = 3 餘數 1 |
 3 / 2 = 1 餘數 1 |
 1 / 2 = 0 餘數 1 |

小數部份

0.625 * 2 = 1.250 取整數 1 |
0.250 * 2 = 0.500 取整數 0 |
0.500 * 2 = 1.000 取整數 1 ↓ => 101

(2)

二進位 → 十進位
範例計算公式
101(2) = 5(10)
(1 * 2

2

) + (0 * 21) + (1 * 2

0

) = 5

(10)

1101.101(2) = 13.625(10)整數部份

(1 * 2

3

) + (1 * 2

2

) + (0 * 21) + (1 * 2

0

) = 13

(10)小數部份

(1 * 2

-1

) + (0 * 2-2) + (1 * 2

-3

) = 0.625

(10)

八進位與十進位的轉換

十進位 → 八進位
範例計算公式
395(10) = 613(8)
395 / 8 = 49 餘數 3 ↑ => 613

(8)

 49 / 8 =  6 餘數 1 |
  6 / 8 =  0 餘數 6 |
17.25(10) = 21.2(8)整數部份

 17 / 8 =  2 餘數 1 ↑ => 21

(8)

  2 / 8 =  0 餘數 2 |

小數部份

0.25 * 8 = 2.00 取整數 2 ↓ => 0.2

(8)

八進位 → 十進位
範例計算公式
26(8) = 22(10)(2 * 81) + (6 * 80) = 22(10)
162.4(8) = 114.5(10)整數部份

(1 * 8

2

) + (6 * 8

1

) + (2 * 8

0

) = 114

(10)小數部份

(4 * 8

-1

) = 0.5

(10)

十六進位與十進位的轉換

十進位 → 十六進位
範例計算公式
2748(10) = ABC(16)
2748 / 16 = 171 餘數 12 ↑ => ABC

(16)

 171 / 16 =  10 餘數 11 |
  10 / 16 =   0 餘數 10 |
799.375(10)= 31F.6(16)整數部份

799 / 16 = 49 餘數 15 ↑ => 31F

(16)

 49 / 16 =  3 餘數  1 |
  3 / 16 =  0 餘數  3 |

小數部份

0.375 * 16 = 6.000 ↓ => 0.6

(16)

十六進位 → 十進位
範例計算公式
4EB(16) = 1259(10)
(4 * 16

2

) + (14 * 16

1

) + (11 * 16

0

) = 1259

(10)

B2.5(16) = 178.3125(10)整數部份

(11 * 16

1

) + (2 * 16

0

) = 178

(10)小數部份

(5 * 16

-1

) = 0.3125

(10)

八進位與二進位的轉換

8 = 23,所以八進位可以 3 個位數的二進位表示,將每一個八進位數字都轉成二進位數字。

八進位 → 二進位
範例計算公式
76.21(8) = 111110.010001(2)整數第二位數 7

7 / 2 = 3 餘數 1 ↑ => 111

(2)

3 / 2 = 1 餘數 1 |
1 / 2 = 0 餘數 1 |

整數第一位數 6

6 / 2 = 3 餘數 0 ↑ => 110

(2)

3 / 2 = 1 餘數 1 |
1 / 2 = 0 餘數 1 |

小數第一位數 2

2 / 2 = 1 餘數 0 ↑ => 010

(2)

1 / 2 = 0 餘數 1 |

小數第二位數 1

1 / 2 = 0 餘數 1 ↑ => 001

(2)

  • 計算結果,不足 3 個位數則「前面」補 0
二進位 → 八進位
範例計算公式
101001110.01(2) = 516.2(8)整數左側三位數 101

(1 * 2

2

) + (0 * 21) + (1 * 2

0

) = 5

(8)整數中間三位數 001

(0 * 22) + (0 * 21) + (1 * 2

0

) = 1

(8)整數右側三位數 110

(1 * 2

2

) + (1 * 2

1

) + (0 * 20) = 6

(8)小數三位數 010

(0 * 22) + (1 * 2

1

) + (0 * 20) = 2

(8)

  • 以小數點為基準,分向左(整數)右(小數)兩邊,每 3 個位數為一組
  • 「整數」不足 3 個位數則「前面」補 0
  • 「小數」不足 3 個位數則「後面」補 0

十六進位與二進位的轉換

16 = 24,所以十六進位可以 4 個位數的二進位表示,將每一個十六進位數字都轉成二進位數字。

十六進位 → 二進位
範例計算公式
5BD1.B(16) = 0101101111010001.1011(2)整數第四位數 5

 5 / 2 = 2 餘數 1 ↑ => 0101

(2)

 2 / 2 = 1 餘數 0 |
 1 / 2 = 0 餘數 1 |

整數第三位數 B → 11

11 / 2 = 5 餘數 1 ↑ => 1011

(2)

 5 / 2 = 2 餘數 1 |
 2 / 2 = 1 餘數 0 |
 1 / 2 = 0 餘數 1 |

整數第二位數 D → 13

13 / 2 = 6 餘數 1 ↑ => 1101

(2)

 6 / 2 = 3 餘數 0 |
 3 / 2 = 1 餘數 1 |
 1 / 2 = 0 餘數 1 |

整數第一位數 1

 1 / 2 = 0 餘數 1 ↑ => 0001

(2)小數第一位數 B → 11

11 / 2 = 5 餘數 1 ↑ => 1011

(2)

分類資訊類