bitmap - 谁能简化这个按位表达式
问题描述
(a&b)^(a|b) 我怎么能这么简单,如果你能添加任何学习简化的参考会更好
解决方案
(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
作为右操作数,然后它回到你原来的表达式。