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