Простая разработка xor и упрощение:
((a^b) & ~b) | (~(a^b) & b) ==
((a|b) & (~a|~b) & ~b) | ((a|~b) & (~a|b) & b) ==
((a|b) & ~b) | ((a|~b) & b) ==
a | a ==
a
Другой способ увидеть это - определить f(a, b) = (a^b) & ~b
.
Оператор становится f(a, b) | f(a, ~b)
, поэтому вам просто нужно упростить f(a, b)
:
f(a, b) ==
(a^b) & ~b ==
(a|b) & (~a|~b) & ~b ==
(a|b) & ~b ==
a
Итак, f(a, b) = a
независимо от того, b
есть, а f(a, b) | f(a, ~b)
- это просто a | a == a
.