十六进制和二进制相互转换(快速转换)

简介:

二进制:逢2进1;

由0和1组成

十六进制:逢16进1,

十六进制由0-9,A-F组成

与十进制的对应关系

0  1  2  3  4  5  6  7  8  9   A   B   C  D  E   F

0  1  2  3  4  5  6  7  8  9  10  11 12 13 14 15

贴士:十六进制一般会以“0x”开头,或者以“H”结尾。

0x是16进制的前缀,H是16进制的后缀
都是表示十六进制数,意义上没有什么区别,完全相等。至于什么时候用0x,什么时候用H,这取决于你在什么环境下使用,如果在C/C++,必须用0x来表示。
在C语言中是不能用H的.    

在数字后加一缩写字母后缀作为不同进制数的标识。各种进制数的后缀字母分别为:
B :二进制数。
Q :八进制数。
D :十进制数。
H :十六进制数。
对于十进制数通常不加后缀,也即十进制数后的字母 D 可省略。

二进制和十六进制转换前提

1.先了解二进制的8421

首先我们来看一个二进制数:1111,它是十进制的多少呢?
你可能还要这样计算:1×2º+1×2¹+1×2²+1×2³=1×1+1×2+1×4+1×8=15。

我们必须直接记住1111每一位的权值(又叫位权),并且是从高位往低位记,:8、4、2、1。 即,最高位的权值为2³=8,然后依次是 2²=4,2¹=2,2º=1。

记住8 4 2 1,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。


概念补充:基数:进位计数制中所使用的不同基本符号的个数称为该计数制的基数,比如十进制就是1.2.3.4.5.6.7.8.9.0这十个数,相对而言二进制就两个基数:0和1,八进制就是:0.1.2.3.4.5.6.7,十六进制就是:0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F
         位权:进位制中,把一个数中各位数字为1时代表的数值大小称为位权。如456它们的位权就是当各位为1时的数值大小,456中的4的位权就是10(2),5的位权就是10(1),6的位权就是10(0).
         

通过二进制转十进制,十进制再转16进制的方法,间接实现二进制转16进制的过程

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 + 0 + 2 + 1 = 11= B
1010 = 8 + 0 + 2 + 0 = 10 =A
1001 = 8 + 0 + 0 + 1 =9 =9
……
0001 = 0 + 0 + 0 + 1 = 1= 1
0000 = 0 + 0 + 0 + 0 = 0= 0
2.二进制转十六进制

有1得出

1111 1101 , 1010 0101 , 1001 1011
     F D ,        A 5 ,        9 B

这里需要注意的是,在向左(或向右)取四位时,取到最高位(最低位)如果无法凑足四位,就可以在小数点的最左边(或最右边)补0,进行换算:

10111.011 四位一拆可以拆成0001 0111.0110 转换为十六进制为 17.6 “.”小数点照着写就行

3.十六进制转二进制

同理也是十六进制转十进制,十进制转二进制,都是通过中间键十进制来转换

FD=15 13 = 8+4+2+1   8+4+0+1=1111  1101

总结:也许小伙伴有比此方法更快捷的方法,但是此方法也有优点

减少了记忆的量,只需要了解8421 ,便可二进制,十进制,十六进制自由转换

参考:https://blog.csdn.net/diyu122222/article/details/80692904

你可能感兴趣的:(java,基础)