二進制是電腦用的數字系統,所以所有指令和數據都必須變成一串串二進制數字電 腦才會懂得處理。但對人類來說,二進制並不是一個很有效律去表示數字的方式,例如要表示 1000 這個數字,用十進制我們只需要 4 個數位,但用二進制我們便要 10 個數位(因為 \(2^{10}=1024\) )。所以,為了更容易表達電腦的指令和數據,我們會用「十 六進制數字系統」(Hexadecimal number system)。
十進制需要有 10 個符號去代表 0 至 9 ,自然地十 六進制需要 16 個符號去代表 0 至 15 。我們依舊用阿拉伯數字去代表 0 至 9 ,至於 10 至 15 ,我們會用 A 至 F:
A | B | C | D | E | F |
10 | 11 | 12 | 13 | 14 | 15 |
例如,\(7DF_{16}\) (那個下標的 16 代表十六進制)的十六進制展開是
\[7\times 16^2+13\times 16^1+15=2015\]
為什麼我們選擇十六進制,而不是十進制呢?原來十六進制和二進制的轉換是非常 簡單的:每一個十六進制數字都可以用 4 個二進制數字去表達,看看以下列表:
\(0_{16}\) | \(0000_2\) | \(8_{16}\) | \(1000_2\) |
\(1_{16}\) | \(0001_2\) | \(9_{16}\) | \(1001_2\) |
\(2_{16}\) | \(0010_2\) | \(A_{16}\) | \(1010_2\) |
\(3_{16}\) | \(0011_2\) | \(B_{16}\) | \(1011_2\) |
\(4_{16}\) | \(0100_2\) | \(C_{16}\) | \(1100_2\) |
\(5_{16}\) | \(0101_2\) | \(D_{16}\) | \(1101_2\) |
\(6_{16}\) | \(0110_2\) | \(E_{16}\) | \(1110_2\) |
\(7_{16}\) | \(0111_2\) | \(F_{16}\) | \(1111_2\) |
例如,我們想將 \(7DF_{16}\) 轉換成二進制數字,只需把表裡對應的二進制數字找出並排在一起便可:
\[7_{16}=0111_2, D_{16}=1101_2, F_{16}=1111_2\]
\[7DF_{16}=0111 \ 1101 \ 1111_2=11111011111_2\]
如果我們有一個二進制數字,例如 \(101110110010110_2\) ,把它轉換成十六進制數字亦是很簡單的:將數位從右到左四個一組的分開(如最左的一組不夠四個數位,便用 0 補上):
\[0101 \ 1101 \ 1001 \ 0110\]
跟著在表裡找出對應的十六進制數字便可:
\[5D92_{16}\]
所以任何一個用十六進制表示數字,其長度大約只是二進制表示的長度的四分之一!
現在同學們可試試以下練習: