int main()
{
int a=1,b;
b=~1;
printf(""%d",b);
return 0;
}
通过显示按位操作来解释它将有助于理解......
提前感谢.......
答案 0 :(得分:8)
这正是你可能想象的。二进制1
为00000001
(位数取决于您平台上int
的大小)。 ~1
执行按位反转,即111111110
。在two's complement(最常见的二进制算术系统)中,这等于-2
。
答案 1 :(得分:3)
此身份应该可以帮助您记住~
的行为:
~x == -x - 1
将其应用于1:
~1 == -1 - 1
== -2
位:
1 == ...0000000001
~1 == ...1111111110 # flip the bits
0 == ...0000000000
-1 == ...1111111111 # two's complement representation for negative numbers
-2 == ...1111111110
答案 2 :(得分:0)
以下是发生的事情:
1: 00000001
~1: 11111110
如果考虑有符号整数, 0:00000000 -1 -1:11111111 -2:11111110
基本上,从零开始,减去两个,看看你得到了什么。