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这将是100
或010
谢谢
回答:
您对这些负数应该是什么样的理解是有缺陷的。Java对负数使用二进制补码,而基本规则是取正数,将所有位取反然后加1。那给你带来负面影响。
因此,正如您所说的,五个是:
0000...00000101
反转可为您提供:
1111...11111010
然后加一个给出:
1111...11111011
您
显示的位模式-5
称为符号/幅度,您只需翻转最左边的位就可以取反数字。在C实现中,这是三种可能性(a)之一,但Java仅使用二进制补码(对于其负整数)。
(a)但是请记住,C和C ++当前都在努力删除其他两种编码类型,并且只允许二进制补码。
以上是 Java中负整数的二进制表示 的全部内容, 来源链接: utcz.com/qa/406246.html