Java中负整数的二进制表示

请帮我了解负整数的二进制表示形式。

例如,我们有5。5的二进制表示是00000000.00000000.00000000.00000101

而且据我了解,-5的二进制表示应该像10000000.00000000.00000000.00000101

但是输出是11111111.11111111.11111111.11111011

我有2个问题:

1)为什么这里有这么1多位。

2)我真正无法理解的是最后3位011。看起来像3。即使是+1或-1这将是100010

谢谢

回答:

您对这些负数应该是什么样的理解是有缺陷的。Java对负数使用二进制补码,而基本规则是取正数,将所有位取反然后加1。那给你带来负面影响。

因此,正如您所说的,五个是:

0000...00000101

反转可为您提供:

1111...11111010

然后加一个给出:

1111...11111011

显示的位模式-5称为符号/幅度,您只需翻转最左边的位就可以取反数字。在C实现中,这是三种可能性(a)之一,但Java仅使用二进制补码(对于其负整数)。


(a)但是请记住,C和C ++当前都在努力删除其他两种编码类型,并且只允许二进制补码。

以上是 Java中负整数的二进制表示 的全部内容, 来源链接: utcz.com/qa/406246.html

回到顶部