XORをAND、OR、NOTで表す
基本情報技術者の教本に以下の記述を見つけた。
排他的論理和の展開式は次の通りなので、しっかりと覚えておこう。 a ^ b = a & ~b | ~a & b ※ "^" は XOR、"&" は AND、"|" は OR、"~" は NOT の意味 演算子の優先順位は OR < XOR < AND < NOT
何がどうしてそうなるのか、論理代数の基礎勉強をしていないこともあり、分からなかった。
自分で求めたのは以下の解答である。
a ^ b = ~(a & b) & (a | b) = answer - - -------- ------- ------ 0 ^ 0 = 1 & 0 = 0 0 ^ 1 = 1 & 1 = 1 1 ^ 0 = 1 & 1 = 1 1 ^ 1 = 0 & 1 = 0
実際にはこれでも間違ってはいない(と言うよりも、こちらの方が加算器で使われている)が、この式を展開することができなかった。そこで以下のサイトを参考に式展開して見た。
参考:http://www.ccad.sist.chukyo-u.ac.jp/~mito/syllabi/dscrtMath2/alg/index.htm
式展開の経過は以下のようになる。
a ^ b = ~(a & b) & (a | b) = (~a | ~b) & (a | b) = (~a | ~b) & a | (~a | ~b) & b = (~a & a | ~b & a) | (~a & b | ~b & b) = (0 | ~b & a) | (~a & b | 0) = ~b & a | ~a & b = a & ~b | ~a & b
なるほど、分配律や補元律で簡単に展開できるものだ。