位元操作符不

问题描述 投票:0回答:1

我遇到了一个比特运算的问题。它是位式 .

如果 A = 5; 然后 ~A = ?

5的二进制是 101,反之则为 010,再换算成十进制就是 0 * 2^2 + 1 * 2^1 + 0 * 2^0 = 2

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

System.out.println( ~5 );

输出:

-6

我不知道为什么 谢谢!!!

bit-manipulation bitwise-operators
1个回答
1
投票

如果你用标准的 int,然后在将你的A赋值为5。

int A = 5;

那么你的 "A "就不是 101b00000000000000000000000000000101b - 全部32位。

NEG 操作,对所有位进行反演,你将得到。

A = 11111111111111111111111111111010

而这个int值就是 -6,在 二补代表,用在电脑上最多。

© www.soinside.com 2019 - 2024. All rights reserved.