为什么对1取反为-2?

Posted tigerlion

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么对1取反为-2?相关的知识,希望对你有一定的参考价值。

为什么对1取反为-2?

int i =5;
// ~i = -6
int j = 1;
// ~j = -2

为什么?

——原来计算机中带符号的整数以二进制的补码进行存储。

参见:

http://www.cnblogs.com/dolphin0520/archive/2012/10/09/2711768.html

从原码/补码的角度来看,就清楚了。

1
原码 00000000 00000000 00000000 00000001
取反 11111111 11111111 11111111 11111110
-2
原码 10000000 00000000 00000000 00000010
反码 11111111 11111111 11111111 11111101
补码 11111111 11111111 11111111 11111110
5
原码 00000000 00000000 00000000 00000101
取反 11111111 11111111 11111111 11111010
-6
原码 10000000 00000000 00000000 00000110
反码 11111111 11111111 11111111 11111001
补码 11111111 11111111 11111111 11111010

以上是关于为什么对1取反为-2?的主要内容,如果未能解决你的问题,请参考以下文章

对null,undefined取反的常见情况分析

计算机组成:数制与运算

java中为什么byte的取值范围是-128到+127

鬼题Ghost [manacher]

java中byte的范围计算

小程序开发