C++问题位运算

来源:百度知道 编辑:UC知道 时间:2024/06/11 04:30:57
3&-3怎么计算?详细点

计算机都是用补码存储数字的。整数是32位。所以
3: 0000 0000 0000 0000 0000 0000 0000 0011;
-3:1111 1111 1111 1111 1111 1111 1111 1101;
与的话只有1&1=1;
所以3&-3:0000 0000 0000 0000 0000 0000 0000 0001;也就是1.
不知道你明白了不

整数用补码表示,负数的补码是其正数的反码加1.正数占4个字节共32位,所以
3的补码:
0000 0000 0000 0000 0000 0000 0000 0011
-3的补码:
1111 1111 1111 1111 1111 1111 1111 1101
按位相与,同为1时为1,同为0是为0.所以3&-3的结果就是1.

C中整数用补码表示,负数的补码是其反码加一,再和3取与运算即可