口算 16 進位制轉換 10 進位制,但只適合兩位的 16 進位制

bigbug發表於2019-03-05

引發思考的原因

今天在看《Redis設計與實現》的壓縮列表的構成,看到有用16進製表示當前列表存了多少位元組,我所掌握的16進位制轉換10進位制都是先轉2進位制,2進位制再轉10進位制,於是就走了神,多想了想16進位制和10進位制之間的轉換問題

大概思想

站在10進位制看16進位制無非是要比10進位制多6位數,所以可以這樣:

0X50 說明經過了5輪,16進位制比10進位制多6位數,所以轉換為10進製為:
5 X 6 = 30
30 + 50 = 80(十進位制)
0X3C 說明經過了3輪,16進位制比10進位制多6位數,所以轉換為10進製為:
3 X 6 = 18
它的個位是C,對應10進製為 12
最終:
30 + 18 + 12 = 40 (十進位制)
0XEE  說明經過了14輪,16進位制比10進位制多6位數,所以轉換為10進製為:
14 X 6 = 84
它的個位是E,對應10進製為 14
140 + 84 + 14 = 238

注意 只適用於兩位的16進位制

兩位的16進位制,的確能口算出10進位制,但是我還沒整明白為什麼大於兩位的不適用,有骨骼精奇的老鐵能指點下嗎?

本作品採用《CC 協議》,轉載必須註明作者和本文連結

戀戀不忘,必有迴響。

相關文章