使用8421碼將二進制轉換爲十進制

學習進制轉換對學習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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章