首页 > 解决方案 > 谁能简化这个按位表达式

问题描述

(a&b)^(a|b) 我怎么能这么简单,如果你能添加任何学习简化的参考会更好

标签: bitmapbit-manipulationbitwise-operatorsbitmaskbitwise-and

解决方案


(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作为右操作数,然后它回到你原来的表达式。


推荐阅读