是否有返回 1 个位相等的按位运算?

问题描述 投票:0回答:1

我正在尝试编写一个简单的 C 按位运算,如果位相等则返回 YES。 真值表如下:

我尝试了 AND、XOR 和 OR 的各种组合,但没有成功。 当然,我可以扫描每个位对并使用“IF”语句提出问题,但更优雅地做到这一点。

c bitwise-operators
1个回答
5
投票

@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
.

© www.soinside.com 2019 - 2024. All rights reserved.