進制的轉換

最近在弄藍牙BLE的項目,用到了進制,以前也學過進制,但每次使用的時候還是要去查資料,記也沒記住,所以決定寫一篇博客,要用的時候直接查。好記憶不如爛筆頭

 

首先來個十進制和二進制,畢竟接觸的最早

 

十進制:用數字表示0123456789

二進制:用數字表示01;

 

十進制轉換爲二進制:

一個十進制數,分爲整數部分和小數部分,如:1234567.89

 

下面來舉一個列子:

98轉換爲二進制

98/2 = 49........0

49/2 = 24........1

24/2 = 12........0

12/2 = 6.........0

6/2 = 3...........0

3/2 = 1 ...........0

1/2= 0 ...........1

轉換成的二進制爲(從後往前讀) 1000010;

計算方法:每次將整數部分除以2,得到餘數, 從後面往前面獲取;

 

 

小數部分轉換爲二進制:

小數部分乘以2,取整數,剩下的小數部分繼續乘以2,一直到小數部分爲0爲止。。。如果小數部分一直不爲0,則按照四捨五入的法則,根據後面一位是0還是1,取捨,如果是零,舍掉,如果是1,向入一位。換句話說就是0舍1入。

 

比如0.255;

0.255 * 2 = 0.51;         ------0

0.51 *2 = 1.02;           ------1

0.02 *2 =0.04;            -----0

0.04*2 = 0.08;            -----0

0.08 * 2 = 0.16;          -----0

0.16 *2 = 0.32;          ------0

0.32 *2 = 0.64;           -----0

0.64*2=1.28;             ------1

0.28 *2=0.56;           -------0

0.56 *2  =1.12;         -------1

0.12*2 = 0.24;           ------0

0.24*2 = 0.48;           ------0

0.48*2 = 0.96;           ------0

0.96*2 = 1.92;          -------1

0.92*2=1.84;            -------1

0.84*2 =1.68;            -------1

//這裏我寫的夠長了,這裏就這樣了吧

二進制(從前往後讀)0.

即是:0.01000001       (後面的我捨棄了,0捨棄,1向前進一位)

 

合併整數和小數

十進制轉換爲二進制

98.25

98.25轉換二進制1000010.01000001;

 

---------------------------老子是一條分割線

二進制轉換爲十進制:

方法:按權重相加法,即二進制每位上的數乘以權重,然後相加之和即是十進制數

比如二進制數1101:    1*2^0 + 0*2^1 + 1*2^2 + 1*2^3=

轉換爲十進制           1    + 0     +  4      +  8 = 13;

 

小數轉換爲十進制:    0.0111;

0 *2^-1   +1 *2^-2 + 1*2^-3 +1*2^-4 =

0          +1/4 +1/8 +1/16 = 0.4375

 

 

整數和小數:

1101.0111 = 13.4375;

 

 

 

 

 

 

十進制和八進制的轉換

十進制:0123456789

八進制:01234567

可以類似於十進制轉二進制

整數部分;除8取餘法,小數部分,剩義8取整數

一直取到小數部分爲零爲止。如果永遠不能爲零,就同十進制數的四捨五入一樣,暫取個名字叫3舍4入。

796轉換爲八進制

796/8=99        .....4

99/8 = 12       ......3

12/8 = 1     ..........4

1/8 = 0 ..............1

轉爲八進制爲1434

 

小數0.703125

0.70315 * 8 = 5.625 ---5

0.625  *8 = 5.0     ---5

十進制:0.55

 

整數和小數:

796.703125

1434.55

 

 

八進制轉換爲十進制:

1434.55

1434

4*8^0   +3 *8^1 + 4 *8^2 + 1* 8^3 =

4       + 24    +256     +  512 = 796

 

 

小數部分

0.0703125

0*8^-1 + 7*8^-2 + 0*8^-3 + 3* 8^-4 + 1*8^-5 + 1*8^-6 + 2*8^-7 + 5*8^-8=

 

 

十進制轉換爲十六進制

十進制:0123456789

十六進制:0123456789ABCDEF

類似於十進制轉換二進制和十進制轉換爲八進制

 

十進制轉爲16進制(整數除以16):

91.876

 

91

91/16 = 5........11

5/16 = 0.........5

91轉換爲十六進制5B

0.876轉爲16進制

0.876*16 = 14.016     ------14

0.016 * 16 = 0.256        ---0

0.256 * 16 = 4.096      -----4

轉換後的十六進制0.E04

 

91.867轉換爲十六進制爲5B.E04

 

 

 

16進制轉換爲10進制

2a轉換爲十進制

A * 16^0 + 2 * 16^1 = 42

 

0.5b轉換爲十進制

5*16^-1 + 11 *16^-2 =

0.3125 +0.04296875 =

 

 

 

二進制轉換爲8進制

 

· 需要了解一個數學關係,即2^3=8,2^4=16,而八進制和十六進制是用這關係衍生而來的,即用三位二進制表示一位八進制,用四位二進制表示一位十六進制數。

· 接着,記住4個數字8、4、2、1(2^3=8、2^2=4、2^1=2、2^0=1)。現在我們來練習二進制與八進制之間的轉換。這段話來自簡書的一篇博文:http://www.jianshu.com/p/555cd32e99cc希望大家也去看看原文,我也是看這篇博文學的進制轉換

 

二進制轉換爲8進制

·  方法:取三合一法,即從二進制的小數點爲分界點,向左(向右)每三位取成一位,接着將這三位二進制按權相加,得到的數就是一位八位二進制數,然後,按順序進行排列,小數點的位置不變,得到的數字就是我們所求的八進制數。

·  如果向左(向右)取三位後,取到最高(最低)位時候,如果無法湊足三位,可以在小數點最左邊(最右邊),即整數的最高位(最低位)添0,湊足三位。

·  

作者:MPPC
鏈接:http://www.jianshu.com/p/555cd32e99cc
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

 

 

二進制

11 011.101 111

 

011 011.101 111

整數部分      =33

1*2^0 + 1*2^1 + 0*2^2  =  3

1      + 2     + 0

 1*2^0 + 1*2^1 + 0*2^2 =  3

1      +2     + 0     =

小數部分             =0.57

1*2^0 + 0*2^1 + 1*2^2  = 5

1 + 0 + 4

1*2^0 + 1*2^1 + 1*2^2 =  7

1     +2    + 4 =

011 011.101 111轉換爲八進制33.57

 

 

八進制轉換爲二進制

33.57

 

取一分三法,即將一位八進制數分解成三位二進制數,用三位二進制按權相加去湊這位八進制數,小數點位置照舊。

先來看看二進制的規律 111      1*2^0  + 1*2^1 + 1*2 ^2 = 1 + 2 + 4也就是如果數不爲0,而爲1的時候,則乘以權重可以 等於      

0位    1

2位     2

3位     4

33.57       

3 ====== 011

3=======011

5======101

7======= 111  

所以八進制轉換爲8進製爲  11 011.101 111

 

二進制與16進制的轉換

與二進制與八進制轉換相似,只不過是一位(十六)與四位(二進制)的轉換

111101110111

00 11  1101,1101 1100

1*2^0 +1*2^1 + 0*2^2 +0*2^3 = 

1  +2     +0 +0   =3

×2^0  +0*2^1 + 1*2^2 +1×2^3  = 

1   + 0 +  4 +8 = 13

整數:3D

小數

1*2^0 +0*2^1 + 1*2^2+ 1*2^3 = 13

1     + 0  +  4    + 8 =

0*2^0 + 0^2^1 + 1*2^2 + 1*2^3 =

0   + 0     +  4    +  8 =  12

小數部分轉換爲十六進制:DC

111101110111

轉換爲十六進制等於3D.DC

 

 

十六進制轉換爲2進制

1111 = 1*2^0 + 1*2^1 + 1*2^2 + 1*2^3  =    1   +   2       +4      +8

取一分四法,即將一位十六進制數分解成四位二進制數,用四位二進制按權相加去湊這位十六進制數,小數點位置照舊。

3D.DC

3 =======>11

D=======>1101

 

D======>1101

C=====>11

 

則二進制爲:111101,110111

 

 

 

 

 如果有錯誤,歡迎告知QQ2235577382,謝謝

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發佈了29 篇原創文章 · 獲贊 65 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章