您的位置首页百科问答

十六进制机器码和十六进制数有什么区别吗?

十六进制机器码和十六进制数有什么区别吗?

的有关信息介绍如下:

十六进制机器码和十六进制数有什么区别吗?

我想我大概明白了你的意思。

你大概是看到了转换为机器码的程序是类似这样显示的:

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进制或八进制来表示。