二進位制 十進位制 十六進製制互轉

2022-01-31 19:27:07 字數 3222 閱讀 4083

1.介紹

2進製:用兩個阿拉伯數字表示,0、1;

10進製:用十個阿拉伯數字表示,0到9(0、1、2、3、4、5、6、7、8、9);

16進製制:0到9(0、1、2、3、4、5、6、7、8、9) + a到f(a,b,c,d,e,f),

16進製制說明:

這五個字母來分別表示10,11,12,13,14,15;

字母不區分大小寫;

c,c++規定,16進製制數必須以"0x"開頭,後面跟實際數值,其中:0x中的0是數字0,而不是字母o。

2.轉換

2.1 二進位制與十進位制

二進位制轉十進位制

規則:每一位獲得的值=權值 * 2的權位數-1次方,再將結果相加。

舉例: 

二進位制:110011

轉化成十進位制:1*25+1*24+0+0+1*2+1*20=51

十進位制轉二進位制

規則:把要轉換的數,除以2,一直除到商為0,將所有餘數倒序排列

舉例:十進位制:51

轉換成二進位制:

2.2 十六進製制與十進位制

十六進製制轉十進位制 

規則:每一位獲得的值=權值 * 16的權位數-1次方,再將結果相加。

舉例: 

十六進製制:0x10abf

轉換成十進位制:1*164+0+10*162+11*16+15*160=68287

十進位制轉十六進製制

2.3 二進位制與十六進製制

2.3.1 二進位制轉十六進製制

規則:一般地,二進位制先轉換成十進位制,然後十進位制再轉換成十六進製制

舉例:二進位制:110011

二進位制轉換成十進位制,由上面可知,結果為:51;十進位制再轉換成十六進製制,結果為:0x33

2.3.2 十六進製制轉二進位制  

規則:一般地,十六進製制先轉換成十進位制,然後十進位制再轉換成二進位制

舉例:十六進製制:0x10abf

十六進製制轉換成十進位制,,由上面可知,結果為:68287;十進位制再轉換成二進位制,結果為:1 0000 1010 1011 1111

2.3.3 僅4位的2進製數與十六進製制互相轉換 快速計算方法  

二進位制        十進位制值            十六進值     

1111        = 8 + 4 + 2 + 1 = 15              f

1110       = 8 + 4 + 2 + 0 = 14            e

1101       = 8 + 4 + 0 + 1 = 13            d          

1100       = 8 + 4 + 0 + 0 = 12            c          

1011       = 8 + 4 + 0 + 1 = 11            b          

1010       = 8 + 0 + 2 + 0 = 10            a

1001       = 8 + 0 + 0 + 1 = 10              9

1000       = 8 + 0 + 0 + 0 = 8     8  

0111       = 0 + 4 + 2 + 1 = 7         7

0110       = 0 + 4 + 2 + 0 = 6        6

0101       = 0 + 4 + 0 + 1 = 5        5

0100       = 0 + 4 + 0 + 0 = 4        4

0011  = 0 + 0 + 2 + 1 = 3        3

0010       = 0 + 0 + 2 + 0 = 2        2

0001       = 0 + 0 + 0 + 1 = 1        1

0000  =0            0

說明:參照該錶,二進位制和十六進製制可以實現自由轉換,但是

其中十進位制的展示,只用於展示,並不能根據將十進位制的值按位數拆分開來直接對照對應的二進位制值進行轉換

二進位制轉十六進製制:從二進位制末端以4位一段,進行拆分,最前面的位數不足4位時,使用0進行填充,按照二進位制轉換成十進位制的方式,分別轉換為十六進製制即可。

舉例:二進位制-111101

以4位進行拆分:0011,1101,轉換成十六進製制:0011=1*2+ 1*1=3,1101=1*23+1*22+0+1=13,轉換結果:0x3d

十六進製制轉二進位制:

上面的對應關係,需要記憶,在十六進製制轉換二進位制時,還有不需要記憶的一種方式:將十六進製制數字分別是使用十進位制數字8,4,2,1進製轉換,然後轉換成4位二進位制數值

規則:十六進製制的每一位的值,使用8,4,2,1進行拆分,不能使用這四個數值求和的,使用0代替;

原因:二進位制數:1111,轉換成十進位制,它的值是多少呢?

你可能還要這樣計算:1 * 2^0 + 1 * 2^1 + 1 * 2^2 + 1 * 2^3 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。

它每一位的權值,從高位往低位分別為:8、4、2、1。即,最高位的權值為23 = 8,然後依次是 22 = 4,21=2, 20 = 1。

1111是最大的4位二進位制,當每位的值分別為:8、4、2、1時,才能滿足4位二進位制數的每一位都為1,

因此,記住8421,對於任意乙個4位的二進位制數,我們都可以很快算出它對應的10進製值。        

六進製制的每一位值都需要使用4位二進位制數字表示。

舉例:十六進製制:0x3d

十六進製制轉換成二進位制:

該十六進製制由2位組成:3和d(十進位制的3和13),3=2+1,所以十六進製制的3對應的二進位制為:0011;13=8+4+1,所以十六進製制的c對應的二進位制為:1101,則      

0x3d=11 1101    

小結:十進位制轉二進位制,有2種實現方式

方式一:

當十進位制數字較小時,一直除以2,將得到的餘數進行倒序排列即可。

方式二:

當十進位制數字較大時,先轉換成十六進製制,再轉換成二進位制即可。(推薦使用)

二進位制轉十進位制,也有2種實現方式

方式一:

每一位分別乘以2的(該位所在位數-1)次方,對結果求和。

方式二:

當二進位制數很長時,先轉換成十六進製制,再轉成二進位制。

C 二進位制,十進位制,十六進製制 互轉

十進位制轉二進位制 console.writeline convert.tostring 69,2 十進位制轉八進位制 console.writeline convert.tostring 69,8 十進位制轉十六進製制 console.writeline convert.tostring 69,1...

C 二進位制,十進位制,十六進製制 互轉

十進位制轉二進位制 console.writeline convert.tostring 69,2 十進位制轉八進位制 console.writeline convert.tostring 69,8 十進位制轉十六進製制 console.writeline convert.tostring 69,1...

C 二進位制,十進位制,十六進製制 互轉

c 進製間互轉 詳細出處參考 十進位制轉二進位制 console.writeline convert.tostring 69,2 十進位制轉八進位制 console.writeline convert.tostring 69,8 十進位制轉十六進製制 console.writeline conver...