學習進制轉換對學習Java的底層源碼有很大的幫助
例如HashMap中用到的的這個方法
public static int highestOneBit(int i) {
// HD, Figure 3-1
i |= (i >> 1);
i |= (i >> 2);
i |= (i >> 4);
i |= (i >> 8);
i |= (i >> 16);
return i - (i >>> 1);
}
如果不懂進制轉換,那就無從下手了
十進制
首先來看一下最常見的十進制
十進制只有十個符號 : 0,1,2,3,4,5,6,7,8,9 最大的爲 “9”
當要表達比 “9"大一位時,只能把"9” 變成"0",同時向左前進一位:
當數字很長時,比如824261231,我們通過單位來進行計算:
二進制轉換十進制
複習了一遍十進制,就要學習一個新的概念了,叫做8421碼,看圖:
使用8421碼對低位相乘 再相加,算爲:
18+14+12+11
最後結果爲15
如果高位有數字,像這樣:
低位 0100 算爲4,高位每次向左移動一位,翻一倍
0001 1111 對應爲
000256 128 64 32 16
結果相加
4+16+32+64+128+256=500
最後得知 二進制
0001 1111 0100
轉換爲十進制等於
500