为什么〜2等于-3?运营商是如何~工作的?
~
请记住,负数存储为正数 的二进制补码 。例如,以下是二进制补码中 -2 的表示:(8 位)
1111 1110
你得到这个的方法是取一个数字的二进制表示,取它的补码(反转所有位)并加一。两个从 0000 0010 开始,通过反转位我们得到 1111 1101。加一个得到上面的结果。第一位是符号位,表示负数。
那么让我们看看我们如何得到~2 = -3:
再来两个:
0000 0010
简单地翻转所有位,我们得到:
1111 1101
那么,二进制补码中的 -3 是什么样的?从正3开始:0000 0011,将所有位翻转为1111 1100,加1成为负值(-3),1111 1101。
因此,如果您只是将 2 中的位取反,您将得到 -3 的二进制补码表示。