進位之間的轉換

來源:互聯網
上載者:User

進位也就是進位制,我們常用到的就是二進位、八進位、十進位、十六進位。

二進位:由0,1兩個自然數組成,運算規律就是逢二進一。

八進位:由0~7八個自然數組成,運算規律就是逢八進一。

十進位:由0~9十個自然數組成,運算規律就是逢十進一。

十六進位:有0~9個自然數和A~F六個大寫字母組成。其中6個大寫字母分別表示10、11、12、13、14、15。運算規律就是逢十六進一。

為了更好的區分各類進位,通常在編寫的時候用該進位來做結尾。

例如十進位數2012,那麼十六進位中可以寫成(7DC)16,八進位可以寫成(3734)8,二進位可以寫成(011111011100)2。

十進位轉為二進位

十進位轉二進位分為整數部分和小數部分

整數部分可以用除以2擷取餘數的方法。得到的餘數就是該位權上的數,得到的商又除以2,如此迴圈,直至商為0,最後從最後的餘數向前讀數。

例如十進位數2012

換算過程

2012 / 2 = 1006 餘 0

1006 / 2 = 503 餘 0

503 / 2 = 251 餘 1

251 / 2 = 125 餘 1

125 / 2 = 62 餘 1

64 / 2 = 31 餘 0 

31 / 2 = 15 餘 ·1

15 / 2 = 7 餘 1

7 / 2 = 3 餘 1

3 / 2 = 1 餘 1

1 / 2 = 0 餘 1

商為0,計算完畢,最後從最後的餘數向前讀數,即11111011100

小數部分可以用小數部分乘以2,然後取整數,剩下的小數繼續乘以2,如此迴圈直至小數部分為0,如果小數部分都不為0,那麼就要根據要求,如果後面一位是0,那麼則取捨,如果是1,那麼則進位1,最後從前面得到的整數往後讀。

例如十進位0.86

換算過程

0.86 * 2 = 1.72 則整數為 1 小數為0.72

0.72 * 2 = 1.44 則整數為1 小數為0.44

0.44 * 2 = 0.88 則整數為0 小數為0.88

0.88 * 2 = 1.76 則整數為1 小數為0.76

0.76 * 2 = 1.52 則整數為1 小數為0.52

0.52 * 2 = 1.04 則整數是1 小數是0.04

0.04 * 2 = 0.08 則整數是0 小數是0.08

0.08 * 2 = 0.16 則整數是0 小數是0.16

0.16 * 2 = 0.32 則整數是0 小數是0.32

0.32 * 2 = 0.64 則整數是0 小數是0.64

…………

依次下去

最後結果為0.1101110000……

同理,十進位轉八進位、十六進位也是如此,只不過是除以8、16。

二進位轉八進位

三位二進位表示一位八進位。如2^3 = 8

二進位轉八進位可以以二進位的小數點為分界點,整數部分向左取以三位為一個單元,小數部分向右取以三位為一個單元,然後計算分別得到的三位,計算得到的結果就是一位八進位,小數點的位置不變。如果無法籌足三位,那麼整數部分則可以在最高位權(即整數的最左邊)添加0補足,小數點部分則在最右邊部分添0補足。

例如二進位 (11101001.100011)2

三位取一 整數部分 011 101 001  小數部分 100 011

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

所以整數部分為351

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

所以小數部分是43

最後八進位的結果是(351.43)8

二進位轉十進位

對於N進位來說,整數部分的第 i 位的位權為N^(i - 1),而小數部分第 j 位的位權則為N^(-j),其中 i 以1開始

可以按權展開求和

例如二進位(1011.01)2

橫向展開:1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 + 0*2^-1 + 1*2^-2 = 11.25

二進位轉十六進位

四位二進位表示一位十六進位,如2^4=16

方法和二進位轉八進位類似,區別的是十六進位是以四位為一個單元。

例二進位(11101001.100011)2

四位取一 整數部分 1110 1001  小數部分 1000 1100

最後得到的十六進位的結果是(E9.8C)16

八進位轉二進位

因為八進位是由0~7的數字組成,且一位八進位為三位二進位,所以可以把一位八進位拆成三位二進位

而二進位上位權對應的權值又是這樣

2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
128 64 32 16 8 4 2 1

八進位二進位

0--------000

1--------001

2--------010

3--------011

4--------100

5--------101

6--------110

7--------111
例八進位25,得到的二進位為(10101)2

八進位434,得到的二進位為(100011100)2

八進位轉十進位

可以按權展開求和

例如八進位(1011.01)8

橫向展開:1*8^3 + 0*8^2 + 1*8^1 + 1*8^0 + 0*8^-1 + 1*8^-2 = 521.215625

八進位轉十六進位

一般不直接轉換,可以先轉換為二進位。然後在轉換為需要的進位

十六進位轉二進位

因為十六進位是由0~9的數字和A~F組成,且一位十六進位為四位位二進位,所以可以把一位十六進位拆成四位二進位

十六進位二進位

0--------0000

1--------0001

2--------0010

3--------0011

4--------0100

5--------0101

6--------0110

7--------0111

8--------1000

9--------1001

A--------1010

B--------1011

C--------1100

D--------1101

E--------1110

F--------1111

例如9EF,則對應的二進位則為100111101111

十六進位轉十進位

按權展開求和,類似八進位轉十進位

ok,若有不對的地方,請各位指出改正,謝謝!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.