電腦的語言:十六進制



二進制是電腦用的數字系統,所以所有指令和數據都必須變成一串串二進制數字電 腦才會懂得處理。但對人類來說,二進制並不是一個很有效律去表示數字的方式,例如要表示 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}\]


所以任何一個用十六進制表示數字,其長度大約只是二進制表示的長度的四分之一!

現在同學們可試試以下練習: