术语和代码行的平等

sca*_*ula 1 c bit-manipulation bitwise-operators logical-operators

任何人都可以一步一步解释我,这种平等如何能够成立?

((a^b)&~b)|(~(a^b)&b)  == a
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

pro*_*gor 6

(X&~Y)|(~X&Y) == X^Y //by definition of XOR

代替X = a ^ b和Y = b:

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

然后,其余的很简单:

(a^b)^b == a^(b^b) == a^0 == a