我遇到了一个比特运算的问题。它是位式 不.
如果 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 = 11111111111111111111111111111010
而这个int值就是 -6
,在 二补代表,用在电脑上最多。