让我的自己在这里有点困惑。
我想测试一组位(3位)是否包含某个位置的位。
if (B110 & B010 == B010)
(B110是要检查的数字,B010我想看的位是否存在)
上面的代码没有给我预期的结果,B110都是真的,B101是真的。我很确定我需要使用&(和)来测试掩码B010。
我的理解是B110& B010等于B010和B101& B010等于B000。但我的if语句是用两个测试位运行的吗?
我正在使用Arduino进行编码,我确信这是对我的一个简单的误解,但不确定在哪里。
答案 0 :(得分:12)
尝试if ((B110 & B010) == B010)
目前它以if (B110 & (B010 == B010))
运行,这将永远是真的。
如this table所示, == 和!= 的优先级高于&amp; , | < / em>等。
答案 1 :(得分:3)
此测试中实际上不需要“== B010
”。在C中,0
表示“false”,而任何非零值都被视为“true”。 B110 & B010
(或该位设置的任何其他值)将返回B010
,这不等于0
,因此测试成功。