十六进制的互转非常简单,基本上就是十进制0-15每个数对应一个数字或字母,非常简单。
一,二进制转十六进制
首先我们先数一下二进制数的位数,是奇数位还是偶数位。如果是奇数位就在最前面加上一个0, 然后我们以四个为一组,将二进制数均匀分开。
例子:
1000100 >> 01000100 >> (0100 0100)2
其次我们要知道,十六进制1-15对应数字如下:
十六 :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
这个记住就好了,按顺序来就是了。
接下来,我们先把二进制转为十进制,刚刚被四等分的二进制数,每一份都是四位,而四位二进制所能表示的最大数1111为15,所以,把每一份都转换成十进制,再转换成十六进制,刚刚好可以对应。
例子:
(0100 0100)2 >> (4 4)10 >> (4 4) 16 >> (4 4)16 >> (44) 16
所以说二进制数1000100的十六进制为44
我们换一个例子:
(1100 1010)2 >> (12 10)16 >> (C A)16 >> (CA)16
所以说二进制数11001010的十六进制是CA
二,十六进制转二进制
反过来就好了,还是用十进制做中间的过渡,来个🌰:
(0623D)16 >> (0 6 2 3 13)10 >> (0000 0110 0010 0011 1101) 2 >> 00000110001000111101 >> 110001000111101
这样就完成了,非常的简单。
三,十进制转十六进制
这部分就不描述了,一个个对应就好了。
四,十六进制转十进制
这部分与二进制转十进制相同的思路,使用权重相加,二进制的权是2^n,那十六进制的就是16^n
我们试一下:
(1A)16 = 1 * 16^1 + 10 * 16^0 = 1 * 16 + 10 * 1 = 26
跟二进制一样的道理,只不过从右往左依次是16的零次方,16的一次方.......把十六进制的数转换成十进制之后乘以位权再相加就好了,例如这里A代表10,在从右往左数第一位,所以乘以16的零次方,以此类推。