异或XOR的结果保存了两个数间的不同位。
那么
A & B 可以把相同的1保存下来。
!A & !B 可以把相同的0保存下来。
(A & B) | (!A & !B) = 保存了两个数相同的位。
最后再反一次:!( (A & B) | (!A & !B) ) = 保存了不同位。
根据公式
1) !( A | B ) = !A & !B
2) !( A & B) = !A | !B
转换一下得到
A ^ B = !( (A & B) | (!A & !B) ) = (!A | !B) & (A | B)