逻辑运算符是否有点明智?

时间:2012-10-31 03:42:35

标签: c bit-manipulation

我现在正在制作一个谜题....试着写 if (x==5 || x==7) 使用按位运算(在C中)。已经工作了一段时间......无法弄明白。

任何帮助将不胜感激!感谢

这不是家庭作业......试图学习考试。

编辑所以格式会是这样的 if (x _ _)在空白处按位操作

SORRY需要指定,只能是两个字符(运算符或数值) 所以%8例如

2 个答案:

答案 0 :(得分:1)

7d = 111b且5d = 101b

因此位0必须打开,位1无关紧要,位2必须打开,位3-31必须关闭。 因此,屏蔽掉第1位并测试101b

所以你的测试成为((x& ~2)== 5)

然后向Bing或维基百科询问“卡诺地图”,以便你可以自己减少表达。

汤姆在下面的回答也是正确的,而且更简单。你可以写

((x & 5) == 5)

这稍快一些。也许我应该使用卡诺图!

答案 1 :(得分:-1)

您可以将它与'101'进行对比,你得到的结果与5和7相同,即101.

相关问题