【问题标题】:Simplify bitwise operation简化按位运算
【发布时间】:2018-02-27 23:38:50
【问题描述】:

我有这样的if 声明:

if ((x & y) == y && (x & z) == 0) { /* do something... */}

是否可以简化此if 语句,删除&& 运算符并使用 位运算符?

【问题讨论】:

    标签: bit-manipulation bitwise-operators simplify


    【解决方案1】:

    一个简短的等价表达式是

    (x & (y ^ z)) == y
    

    通过查看单个位的所有 8 个结果可能最容易看出正确(这已经足够,因为每个位的结果独立于所有其他位)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-09
      相关资源
      最近更新 更多