経緯
排他的論理和を説明する際に、ネットや書籍に記載されている内容だと概念は理解できるのだが、いまいち消化しきれていない印象を受けた。
※正直なところ、説明する本人も説明する前にネットで確認した。
なのでコードで表現してあげた方がプログラミングをかじった人にしてみれば分かりやすいのでは?
と言う事で記事にしてみた。
JavaScriptで実装した経緯としては、特に準備の必要もなくブラウザさえあれば実行できる手軽さより。
おさらい
排他的論理和について、簡単におさらいしておくと
以下の表のようにどちらか一方が1の場合にのみ、1となる論理演算である。(両方1はダメ)
a | b | c |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
実装
断っておくが、JavaScriptでビット演算子が用意されているのは、知っている。
var c = a ^ b;
ただしそれだと今回の目的から外れるので、自前で実装する。
var c = (a & !b) | (!a & b);
意外と分かりにくい。
これなら万人に理解できる表で十分かもしれない。
(2018/10/12 追記)
演算子をバイナリ論理演算子(&&
や||
)からバイナリビット演算子(&
や|
)に変更しました。