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



