检查位是否设置为1

时间:2013-05-31 11:39:27

标签: java bit-manipulation bit

我正在尝试检查字节变量中的最后2位是否已设置为1.这就是我所拥有的:

if ((my_byte & (1 << 0)) == 1 && (my_byte & (1 << 1)) == 1)

但是,如果它似乎没有工作,因为代码不会进入if语句。我确定my_byte的值是3。

有人知道我做错了吗?

感谢您的帮助。

2 个答案:

答案 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)