C 逻辑运算符到位?

C 逻辑运算符到位?,c,bit-manipulation,C,Bit Manipulation,我现在正在做一个拼图…试着写 if(x==5 | | x==7) 使用按位操作(在C中)。我已经做了一段时间了……我想不出来 任何帮助都将不胜感激!谢谢 Ps这不是家庭作业…试着为考试而学习 编辑,使格式类似 if(x)在空格中进行位运算 抱歉,需要指定,只能是两个字符(运算符或数值) 例如,7d=111b和5d=101b 所以第0位必须是开的,第1位不重要,第2位必须是开的,第3-31位必须是关的。 所以,屏蔽第1位并测试101b 所以你的测试变成((x&~2)==5) 然后询问Bing或wi

我现在正在做一个拼图…试着写
if(x==5 | | x==7)
使用按位操作(在C中)。我已经做了一段时间了……我想不出来

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

Ps这不是家庭作业…试着为考试而学习

编辑,使格式类似
if(x)
在空格中进行位运算


抱歉,需要指定,只能是两个字符(运算符或数值)
例如,7d=111b和5d=101b

所以第0位必须是开的,第1位不重要,第2位必须是开的,第3-31位必须是关的。 所以,屏蔽第1位并测试101b

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

然后询问Bing或wikipedia关于“卡诺图”的信息,这样你就可以自己进行表达式缩减

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

((x & 5) == 5)

这稍微快一点。也许我应该用卡诺地图

你可以用“101”来计算它,得到5和7的相同结果,也就是101。

我认为你需要试着学习一下按位运算符是如何工作的。有太多的信息,你必须想了解它。提示:尝试
^
(XOR)运算符。:)我试过:(问题是,如果我用111进行异或运算,例如,我用“2”表示x=5,用“0”表示x=7。我只需要它在5和7时始终等于非零
111
是十进制数,而不是二进制数。这没那么棘手。再仔细想想。:)只有2个字符?这太荒谬了。只能容纳2个字符(运算符或数字)…如果我得到你的解决方案,那就需要5个字符吧?你说的这个bing是什么?bing类似于谷歌,但在我的手机上集成了完整的操作系统。这不是我想要的答案,但它可以工作…如果没有2个字符的限制。谢谢。抱歉,需要指定,只能是两个字符(运算符或数值),因此%8(例如0B1101和0b0101)也是0B101,但如果数字是“1”(二进制
0001
),当我将其与
101
@TomAngeloClemente一起输入时,它仍然会输出非0的内容,然后变成
~2
,这和Peter Wone的答案是一样的。我知道我可以对它进行异或运算,但这将超过2个字符/操作数