组合按位与补运算符
Combining Bitwise And And Complement Operators
在下面的代码中,由于 x 的按位补码是 -1(使用 2 的补码)并且 y 是 2,我期望 z 的值为零但是我得到 z 的值为 2 当我 运行 program.Can 谁能解释一下我要去哪里错了?
代码
#include <stdio.h>
int main()
{
int x = 0, y = 2;
int z = ~x & y;
printf("%d\n", z);
}
0
的按位补码全是 1
,因此 AND
使用它可以准确地为您提供 AND
的另一个输入,在本例中为 2
.
假设要保存 8 位 space:
0 = 00000000
~0 = 11111111
2 = 00000010
~0&2 = 00000010
在下面的代码中,由于 x 的按位补码是 -1(使用 2 的补码)并且 y 是 2,我期望 z 的值为零但是我得到 z 的值为 2 当我 运行 program.Can 谁能解释一下我要去哪里错了?
代码
#include <stdio.h>
int main()
{
int x = 0, y = 2;
int z = ~x & y;
printf("%d\n", z);
}
0
的按位补码全是 1
,因此 AND
使用它可以准确地为您提供 AND
的另一个输入,在本例中为 2
.
假设要保存 8 位 space:
0 = 00000000
~0 = 11111111
2 = 00000010
~0&2 = 00000010