int main()
{
int a=1,b;
b=~1;
printf(""%d",b);
return 0;
}
请通过显示按位运算来解释这将有助于理解......
提前致谢.......
int main()
{
int a=1,b;
b=~1;
printf(""%d",b);
return 0;
}
请通过显示按位运算来解释这将有助于理解......
提前致谢.......
这正是你可能想象的。 1
是00000001
二进制的(位数取决于int
您平台上的大小)。 ~1
执行按位反转,即111111110
. 在二进制补码(最常见的二进制算术系统)中,这等于-2
.
这个身份应该可以帮助您记住以下行为~
:
~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
这是正在发生的事情:
1: 00000001
~1: 11111110
如果你考虑一个有符号整数,0:00000000 -1 -1:11111111 -2:11111110
基本上,从零开始减去两个,看看你得到了什么。