在做 MTK 方案的時候,修改有關 ACC 模塊的時候,配置宏的時候,需要添加進制代碼,因爲進制是比較重要的東西所以單獨拿出
來給大家說說怎麼掌握好進制,希望大家在看完本篇文章之後 能更遊刃有餘的掌握進制以及進制的轉換在日常的軟硬交互、C/S交
互開發中,或指針、進制都充當着不可或缺的角色,那怎麼樣掌握好進制以及進制之間的轉換呢
博主今天就帶你玩轉進制,讓你很輕鬆的就能掌握,博主將按照最簡單的方法配備圖文,讓你更加加深對進制的理解
開篇前,我們來想想,何謂進制?通俗的說就是逢幾進一,比如十進制,就是逢十進一八進制,就是逢八進一,十六進制,就是逢
十六進一,然而很多這樣的進制都在我們的日常生活中充當着必不可少的角色和組成部分
比如:我們的數學算術,採用的是國際標準,十進制,計算機的計算,顯示都是十進制,除了計算機機器語言(二進制語言)和彙編語
言(變相的二進制英文代替語言,C的最原始語言)手機時鐘、秒錶、手錶等,採用的是 60 進制,逢 60 進一,除了ms,也就是秒後
面的微秒年月日的月份採用的就是 十二進制,這些用到進制的案例都數不勝數,所以我們作爲一位現代開發者,掌握進制是很重要
的
十六進制要加 0x表示,例如:0xA1,0x13,0xFF
十進制直接表示,例如:1,2,3,4,5,6
八進制要加零表示,例如:00,01,02,03,04,05
八進制是 0-7 ,十進制是 0-9 ,唯獨十六進制比較獨特,我們看看它的對應關係
/**
* 十六進制對應關係
*
* 0 → 0
* 1 → 1
* 2 → 2
* 3 → 3
* 4 → 4
* 5 → 5
* 6 → 6
* 7 → 7
* 8 → 8
* 9 → 9
* A → 10
* B → 11
* C → 12
* D → 13
* E → 14
* F → 15
*
* */
① 十六進制
我們就以上述圖片淺藍色框裏面的幾個進制數開篇吧,分別拆分開來,並且換算成十進制表示形式
0x500 1 0x1F0 0x800 0x20 ,首先我們去掉 0x 表示符號,對進制數字逐一進行分解
0x500 = 500 = 5*162 + 0*161 + 0*160 = 1280
0x1F0 = 1F0 = 1*162 + 15*161 + 0*160 = 496
0x800 = 800 = 8*162 + 0*161 + 0*160 =2048
0x20 = 20 = 2*161 + 0*160 =32
1 = 0x01
然後在給大家通俗一下十六進制的表示形式的意義,如下圖:
我這樣解釋不知道你們是不是理解了,我就拿一個例子來更細化更詳細的講吧,就此如0xA1這個數,我們先去掉0x表示符號,那
剩下的就是A1了,因爲A是代表10的,因爲10沒有滿16所以不能進一,但是又不能直接寫一個10,所以在計算機裏用木字母A來
表示10,以此類推,還可以更通俗的理解成 A是十位數,1是個位數,1沒有滿16,所以不能進一,故個位數是1,然後十位數是
10,因爲沒有滿 16 ,故不能進一位,所以寫 10 ,但是在計算機裏面 寫10 是不規範的,而且計算機或語言開發者爲了方便計算
就限定了十六進制9以上16以下 的數字用字母代替,表示位數一,即代表一位數字
因爲在開發中,用的最多的就是十和十六進制,所以本篇重點只講了十和十六進制,反正大致邏輯和關係都表裏如一,只是表現
方式不一樣和進制位不一樣罷了,整體思想都一樣
還有就是給大家一個小技巧來驗證進制轉換是否有誤,如下代碼:
public static void main(String args[]) {
// h:十六進制
int x = 0x1F0;
// d:十進制
int y = 16;
// o:八進制
int z = 015;
System.out.println(String.format("以十進制輸出0x1F0爲:%o", x));
System.out.println(String.format("以十進制輸出0x1F0爲:%d", x));
System.out.println(String.format("以十進制輸出0x1F0爲:%h", x));
System.out.println("**************************************");
System.out.println(String.format("以十進制輸出0x1F0爲:%o", y));
System.out.println(String.format("以十進制輸出0x1F0爲:%d", y));
System.out.println(String.format("以十進制輸出0x1F0爲:%h", y));
System.out.println("**************************************");
System.out.println(String.format("以十進制輸出0x1F0爲:%o", z));
System.out.println(String.format("以十進制輸出0x1F0爲:%d", z));
System.out.println(String.format("以十進制輸出0x1F0爲:%h", z));
}
輸出的測試結果:
以十進制輸出0x1F0爲:760
以十進制輸出0x1F0爲:496
以十進制輸出0x1F0爲:1f0
**************************************
以十進制輸出0x1F0爲:20
以十進制輸出0x1F0爲:16
以十進制輸出0x1F0爲:10
**************************************
以十進制輸出0x1F0爲:15
以十進制輸出0x1F0爲:13
以十進制輸出0x1F0爲:d
相信看了這邊博客,想必你已經對進制掌握已經相當熟練了吧?那還等什麼,趕緊去練練手唄!謝謝觀博!