简化位运算
Simplify bitwise operation
我有一个这样的 if
语句:
if ((x & y) == y && (x & z) == 0) { /* do something... */}
是否可以简化此 if
语句,删除 &&
运算符并仅使用 按位运算符?
一个简短的等效表达式是
(x & (y ^ z)) == y
通过查看单个位的所有 8 个结果可能最容易看出正确(这就足够了,因为每个位的结果独立于所有其他位)。
我有一个这样的 if
语句:
if ((x & y) == y && (x & z) == 0) { /* do something... */}
是否可以简化此 if
语句,删除 &&
运算符并仅使用 按位运算符?
一个简短的等效表达式是
(x & (y ^ z)) == y
通过查看单个位的所有 8 个结果可能最容易看出正确(这就足够了,因为每个位的结果独立于所有其他位)。