我遇到了一个位算术问题。它是按位而非。
如果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-补全表示中,在大多数计算机中使用。