資料表示法與數字系統

十六進位(hexadecimal)

/ HEK-suh-DESS-ih-mul /

一長串 0 與 1 對人類來說很難讀又容易看丟位置——0b1111111100000000 看起來就是一團模糊。十六進位是工程師到處都在用的、二進位的精簡簡寫。它是基底十六,所以需要十六個數字符號:0 到 9,然後用字母 A、B、C、D、E、F 代表數值十到十五。重點不是新的算術,而是一種把同樣那些位元寫得清楚許多的方式。

奧妙在於十六剛好是 2^4,所以每一個十六進位數字正好對應 4 個位元,而一個位元組(8 個位元)永遠剛好是兩個十六進位數字。要轉換,就從右邊把二進位切成 4 個一組,逐組翻譯:0b1100 是 0xC(12),0b1010 是 0xA(10),所以 0b11001010 是 0xCA。回去也一樣機械:把每個十六進位數字展開成它的 4 位元圖樣。我們通常用前綴 0x 標記十六進位數,例如 0x2F,等於 2 乘 16 加 15 = 47(十進位)。

十六進位無所不在:記憶體位址、除錯器裡的位元組值、網頁上的顏色(0xFF0000 是純紅,紅綠藍各兩個十六進位數字)、Unicode 碼點(U+1F600)。它純粹是給人看的記法——機器仍然存著樸素的二進位,十六進位只是一副舒服的眼鏡。新手經典陷阱是忘了這裡的字母 A 到 F 是數字而非文字:0xFF 是單一個數 255,不是兩個 F 字元。

0x2F 的二進位是 0010 1111,等於 2 乘 16 加 15 = 47(十進位)。網頁顏色 0x00FF00 是純綠:紅 0x00、綠 0xFF、藍 0x00。

每個十六進位數字恰好對應四個位元,所以一個位元組永遠是兩個十六進位數字。

十六進位是顯示上的方便,不是另一種數:0xFF、0b11111111 與 255 是同一個值。一定要看清前綴,因為「10」在十進位是十、在二進位是二、在十六進位是十六。

又称
hexbase 16base-1616 進位