在16位机器上-1的二进制和16进制表示为

2025-04-15 04:18:20
推荐回答(4个)
回答1:

负数的表示,一般使用的是补码。

二进制
1111 1111 1111 1111
十六进制
0xFFFF

前面说到了用补码来表示负数,那么什么是补码呢?

子啊二进制中负数的表示曾经有两种思路:
用既定的存储空间中的第一位表示正负号,1代表负,0代表正,以16位为例:
-1就表示为

1000 0000 0000 0001

这里第一位的1表示这个数字是负的

1在这里的表示为

0000 0000 0000 0001

这样带来的一个问题就是,这种存储方式不方便运算。
比如加法

-1+1的结果本来应该是0

以这种方式的计算结果是什么呢?

1000 0000 0000 0001
+
0000 0000 0000 0001
——————————
1000 0000 0000 0010

在这种表示方法下就变成-2了。。。

为了解决这种问题,我们就开始使用补码来表示负数。

要想理解补码,首先得知道什么是反码。
简单点说,反码就是把原码的每一个0都换成1,每个1都换成0.
那么1二进制为:

0000 0000 0000 0001

的反码就应该是

1111 1111 1111 1110

所谓补码呢,就是在反码的基础上+1

这样就成为了

1111 1111 1111 1111

我们再来加一下试试看

1111 1111 1111 1111 即 -1
+
0000 0000 0000 0001 即1
——————————
0000 0000 0000 0000

这样就得到了正确的结果,0。

其他的负数表示方法也跟这个相同。
记住,这样表示数字时,以16位为例,其范围为:
-32768~32767

也就是参数类型中所说的Sign。

现在你应该就能理解为什么许多游戏中,数值溢出是突然变成一个特别小的负数的原因了吧!

至于十六进制,只需要简单地把二进制数转为十六进制就好了!

如有其它问题欢迎追问,望采纳!

回答2:

16位即:两个8位

负数最高位就是最左边为1,正数为0
内存里面表示负数都是以补码的形式存在的所以-1在内存中
二进制的表现形式为:1111 1111-1111 1111
16进制为:0xFFFF

回答3:

16位,即2个字节。-1的16进制为FFFF,二进制为1111 1111 1111 1111

回答4:

饮用寥凶 tangziz786