组合按位与补运算符

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