16進位? Hex? 是什麼概念?

相信大家都有遇過電腦發生錯誤時跑出一堆你都看不懂的錯誤代碼,例如下圖0x000000E2,但這究竟是什麼東西?

0x0AG 這種 數字 (你可能也不知道他事實上是數字),就是我們常聽到的16進位(hex),16進位主要用於電腦記憶體,但你可能又想那二進位(binary)呢? 電腦最基本是從二進位010101組合成的,但如果要你讀一堆2進位豈不是很累嗎? ? 這時候16進位就方便多了。你一定會想為什麼不要用我們最喜歡的10進位呢?我將一一解釋。

 

先來講講平常的寫法,如何立即分辨看到的數字是什麼進位。

2進位: 0b1111 (0b 代表二進位binary)

16進位: 0xF (0x代表二進位)

10進位: 15 (因為人們平常看到數字都直接知道是10進位,所以不用特別標註)

 

0b1111,0xF,15 他們都是一樣的數字

所以可見16進位比起其他來的精簡多,一個F就是10進位的15了。

先來講他們的邏輯 16進位,顧名思義 就是碰到16時進位,就像是10進位碰到10時進位,2進位也是一樣的道理。

而因為阿拉伯數字沒有0-9以上的數字,所以16進位以英文字母來代表不夠的部分,如A=10, B=11, C=12, D=13, E=14, F=15。

所以0xF就代表15,現在你一定想說阿16怎麼辦? 16就近為囉! 0xF + 0x1 就變成0x10,0x10如果用10進位的邏輯思考是10,但我們現在是16進位也就代表十位數(小數點往左數第二個數字)是1時 代表16。

  • 範例 1
    • 2進位: 0b0
    • 10進位: 0
    • 16進位: 0x0
  • 範例 2
    • 2進位: 0b101
    • 10進位: 5
    • 16進位: 0x5
  • 範例 3
    • 2進位: 0b10001
    • 10進位: 17
    • 16進位: 0x11
  • 承藍色畫面錯誤代碼
    • 16進位: 0x000000E2
    • 10進位: 226
    • 2進位: 0b11100010

16進位換算到二進位換算最快的方式就是一位一位換算。0xAB 其實就是 A(10): 0b1010 和 B(11): 0b1011 拼起來 0b10101011,2進位換算16進位一樣的方式反向0b[1010][1011],4個轉一個1010->A, 1011->B,馬上就能算出0xAB了,這也是為什麼16進位會比10進位來的方便。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料