十六进制机器码和十六进制数有什么区别吗?
的有关信息介绍如下:
我想我大概明白了你的意思。
你大概是看到了转换为机器码的程序是类似这样显示的:
0x7f 0x86 0xae 0xc4……
(以上是随便写的
0x是16进制的标示符,它表示后面紧跟的数是16进制表示。)
这时候你就疑惑了,不是说机器码是二进制吗?这都是16进制是什么意思啊?
其实16进制和二进制是等价的,可以很方便的转换。
你看下面这个二进制数
0100 1100 1010 1111
这是一个16位(这个16和16进制没有关系)的二进制数,为什么要每4位用空格分开呢?
你看4位二进制,能有多少种不同的组合呢?是不是2的4次方,16种?
如果我把这16种不同的组合分别用:0123456789abcdef来表示,那上面的二进制数我就可以把它表示为:
0100=4
1100=c
1010=a
1111=f
那是不是上面一长串的二进制数就表示成了4caf?
如果想把4caf转化为二进制,那只需要把每位的16进制数转化为相应的4位二进制数即可。
是不是很方便转换?
所以说16进制和二进制是等价的。只不过显示在屏幕上一串二进制的话,人类看起来很不方便。
一是很容易看错,二是在屏幕上显示的长度也过长。
所以计算机上的二进制数一般都是用16进制来表示,以方便人们的理解。
当然也有三位二进制数一组的八进制表示形式,原因也是相同的。
那为什么不用人们更容易理解和习惯的十进制来表示呢?
因为十进制和二进制没有直观的对应。一个16进制数,它就是4位二进制数。每4位二进制数就对应一个16进制数。
但二进制和十进制之间没有这样的直观转化方式。
习惯和熟悉之后,你很容易把二进制转化为16进制。也很容易把16进制转换为二进制,它们之间的位数转换也是固定的,直观的。
两个16进制数,就是8位二进制。三个16进制数就是12位二进制数。4个16进制数就是16位二进制数。
这种转换是非常简单和直观的。相对来说,十进制和二进制之间的转换就没有这么简单和直观。
所以这就是为什么计算机中的二进制数常用16进制或八进制来表示。



