【发布时间】:2018-02-27 23:38:50
【问题描述】:
我有这样的if 声明:
if ((x & y) == y && (x & z) == 0) { /* do something... */}
是否可以简化此if 语句,删除&& 运算符并使用仅 位运算符?
【问题讨论】:
标签: bit-manipulation bitwise-operators simplify
我有这样的if 声明:
if ((x & y) == y && (x & z) == 0) { /* do something... */}
是否可以简化此if 语句,删除&& 运算符并使用仅 位运算符?
【问题讨论】:
标签: bit-manipulation bitwise-operators simplify
一个简短的等价表达式是
(x & (y ^ z)) == y
通过查看单个位的所有 8 个结果可能最容易看出正确(这已经足够,因为每个位的结果独立于所有其他位)。
【讨论】: