我正在尝试编写一个简单的 C 按位运算,如果位相等则返回 YES。 真值表如下:
我尝试了 AND、XOR 和 OR 的各种组合,但没有成功。 当然,我可以扫描每个位对并使用“IF”语句提出问题,但更优雅地做到这一点。
@daniel、@Barmar 和@pignotto 已经在评论中给出了答案,只是为了给大家说清楚。为 XOR 运算符制作真值表(在 C 中为
X ^ Y
):
X | Y | R |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
这与你想要的相反——即 R 是
0
,你想要1
,反之亦然。
所以你想要
R = ~(X ^ Y)
.
~
运算符反转所有位,将 0
变成 1
和 1
变成 0
.