我正在尝试检查字节变量中的最后2位是否已设置为1.这就是我所拥有的:
if ((my_byte & (1 << 0)) == 1 && (my_byte & (1 << 1)) == 1)
但是,如果它似乎没有工作,因为代码不会进入if语句。我确定my_byte的值是3。
有人知道我做错了吗?
感谢您的帮助。
答案 0 :(得分:4)
使用'if ((my_byte & 0b11) == 0b11)'
即。你使用一个数字对你的数字进行运算,并将两个最终位都设置为1.当且仅当m_byte的最后两位设置为1时,表达式才为真。
答案 1 :(得分:2)
如果设置了该位,则第二个or
语句的值为2
:
if ((my_byte & (1 << 0)) == 1 && (my_byte & (1 << 1)) == 2)
正如@ johnchecn902建议的那样,如果你把它写成(my_byte & (1 << 1)) == 0b10
就会变得更清楚。
也没有必要将其分为两个步骤。整个表达式可以简化为
if ((my_byte & 0b11) == 0b11)