【问题标题】:Can anyone simplify this bitwise expression谁能简化这个按位表达式
【发布时间】:2020-07-02 21:07:59
【问题描述】:

(a&b)^(a|b) 我怎么能这么简单,如果您可以添加任何学习简化的参考,那就更好了

【问题讨论】:

    标签: bitmap bit-manipulation bitwise-operators bitmask bitwise-and


    【解决方案1】:

    (a&b)^(a|b) == a^b

    所以它变得非常简单。

    为什么?我们只看一位,因为所有位都是独立的。原始表达式的真值表是:

    a b a&b a|b  ^
    0 0  0   0   0
    0 1  0   1   1
    1 0  0   1   1
    1 1  1   1   0
    

    这与a ^ b 的真值表相同。

    另一种看待它的方式,也可以在真值表中看到,对于 XOR,我们可以根据需要交换左右操作数。我们可以独立地为每一位做到这一点。假设我们从a ^ b 开始,那么如果需要,我们可以安排操作数,以便将尽可能多的零交换到左侧操作数中,并将尽可能多的零交换到右侧操作数中。对于 00 和 11 没有任何改变,但我们将 10 更改为 01。我们怎么能这样做?通过将a & b 作为左操作数,将a | b 作为右操作数,然后返回到原来的表达式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 2019-07-07
      • 2021-06-23
      • 2017-07-01
      相关资源
      最近更新 更多