1. 程式人生 > >八進位制與十六進位制的演算法

八進位制與十六進位制的演算法

除了二進位制,程式設計中也經常使用八進位制和十六進位制。

八進位制有0~7共8個數字,基數為8,逢八進一,借一當八;十六進位制中,用A來表示10,B表示11,C表示12,D表示13,E表示14,F表示15,因此有0~F共16個數字,基數為16,逢16進1,借1當16。例如:
  • 八進位制 3072 = 3×83 + 0×82 + 7×81 + 2×80 = 1536 + 0 + 56 + 2 = 1594
  • 十六進位制 E3F9 = 14×163 + 3×162 + 15×161 + 9×160 = 57344 + 768 + 240 + 9 = 58361

二進位制、八進位制、十進位制、十六進位制的對應關係
十進位制 二進位制 八進位制 十六進位制 十進位制 二進位制 八進位制 十六進位制
0 0 0 0 10 1010 12 A
1 1 1 1 11 1011 13 B
2 10 2 2 12 1100 14 C
3 11 3 3 13 1101 15 D
4 100 4 4 14 1110 16 E
5 101 5 5 15 1111 17 F
6 110 6 6 16 10000 20 10
7 111 7 7 17 10001 21 11
8 1000 10 8 18 10010 22 12
9 1001 11 9 19 10011 23 13

在C語言中,八進位制通常以“0”開頭(注意是數字 0,而不是字母 o),例如 0307;十六進位制通常以“0x”或“0X”開頭(不區分大小寫),例如 0xE27 或 0X89F。

下面請看八進位制和十六進位制加法運算的兩個例子。
這是選學內容,如果你只想瞭解八進位制和十六進位制,不希望深入研究它們的運算,請忽略這部分內容,不會影響後邊的學習。
1) 八進位制加法:0107 + 0274 = 0403


圖1:八進位制加法運算
2) 十六進位制加法:0XA2B + 0X276 = 0XCA1


圖2:十六進位制加法運算