位运算符NOT



我遇到了一个位算术问题。它是按位而非

如果A = 5;,则~A = ?

5的二进制为101,逆为010,然后转换为十进制为0 * 2^2 + 1 * 2^1 + 0 * 2^0 = 2

但是当我在IDE中测试时,输出如下:

System.out.println( ~5 );

输出:

-6

我不知道为什么。谢谢

如果使用标准int,则在将a分配给5:之后

int A=5;

那么您的"A"将不是101b,而是00000000000000000000000000000101b——全部为32位。

经过NEG运算,将所有位反转,您将得到:

A=1111111111111111111

这个int值是-6,在2-补全表示中,在大多数计算机中使用。

最新更新