進制間的轉換,以及邏輯運算,位運算在進制間的使用

前段時間,在封裝 ImageLoader 的時候,設計到 MD5轉換,看到位運算符,然後今天想花點時間,把之前學的最基礎的 進制以及位運算知識搬到網上然後就有了這篇博客.

一、進制篇
首先,對於整數來說,有四種表現形式:
1.二進制:0和1組成, 規則:滿二進一;
2.八進制 : 由0-7組成,規則:滿八進一; 以0開頭。
3.十進制 : 由0-9組成,規則:滿十進一;
4.十六進制:有0到9,和 A-F 組成,以0x 開頭;
上面以0x 或以0開頭是爲了防止進制混淆。

二、進制間的轉換
(1)小轉大
正常來說一般進制間轉換,不管是八進制還是十六進制還是十進制,都需要先將進制轉換成二進制,在進行其他進制間的轉換。
例1:10進制轉換8進制
10進制:39
第一步:先將10進制轉換成2進制;
1–2–4–8–16–32–64–128–256
上面數字分別是2的幾次冪,例如(2^0=1, 2^5=32);
在10進制轉換2進制的過程中,先將10進制數分解成2的幾次冪相加。
分解式:
32(2^5)+4(2^2)+2(2^1)+1(2^0);
然後從需要2的最大的冪數開始寫,上面得出的結果爲:
1 0 0 1 1 1
由於沒有使用16和8所以在2的三次冪和四次冪都填寫的是0,使用的填1,這樣就完成了簡單的轉換了。

第二步:如果需要二進制向八進制轉換
1 0 0 1 1 1
把6個二進制位拆成3個二進制位一組,如果有位數不夠3的倍數,在二進制位前補0.
0 0 0 – 1 0 0 – 1 1 1
這時候把分開後的二進制位,當成單獨的二進制進行轉換,計算結果:
0–4–7(此時就是轉換成的8進制)

下面是0–4–7怎麼得到的過程:
0對應的是0 0 0
計算過程: 0*2^2+0*2^1+0*2^0=0
4對應的是1 0 0
計算過程: 1*2^2+0*2^1+0*2^0=4
7對應的是1 1 1
計算過程: 1*2^2+1*2^1+1*2^0=7

其實這塊也比較好理解,把一個八進制位看成由三個二進制位組成,就很好理解了.

第三步:二進制轉換十六進制原理
10進制的39
8進制47
2進制的100111
那麼十六進制呢?
上面說到可以看成1個八進制位,可以看成3個二進制組成,也可以理解2的三次冪爲8.
那麼十六進制(16=2^4),也就可以理解成一個16進制位,可以看做4個二進制位組成.

那麼對於二進制向十六進制的轉換過程如下:
和八進制一樣,分成4個二進制位爲一組,不夠再前面補0,不影響二進制結果.
39–>0 0 1 0 — 0 1 1 1
單獨計算每一組的值
2 7
所以得出結果十進制39轉化爲十六進制的27.

總結下:
1.進制間的轉換,都需要先轉換成2進制,然後再用2進制向其他進制進行轉換.
2.二進制向八進制轉換,3個進制位,爲一組;
3.二進制向十六進制轉換,4個進制位,爲一組;

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