2进制 10进制 16进制

2进制 10进制 16进制之间的相互转换

CreateTime--2017年11月20日16:23:56

Author:Marydon

参考链接:http://jingyan.baidu.com/article/495ba84109665338b30ede98.html

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)次方,对结果求和。

    方式二:

     当二进制数很长时,先转换成十六进制,再转成二进制。

      

      

原文地址:https://www.cnblogs.com/Marydon20170307/p/7866961.html