論理演算の1つで、2つの命題のうちのどちらか一方だけが真のときに真となり、それ以外のときには偽となる演算のことです。
プログラミングにおいては、^ や xor を使って書き表すことが多いです。C言語や C++ では、単独の ^ はビット単位の排他的論理和を取ることを表しています。
C言語の ^ については、C言語編第49章で取り上げています(C++ でも基本的に同じです)。
たとえば、「変数 x の値が 0以上か?」と「変数 y の値が 0
か?」という2つの命題に対して排他的論理和を取る場合、x >= 0 xor y == 0
といった記述になります。2つの条件式のどちらか一方だけが満たされている場合にだけ、全体として真
(true)
になり、両方とも満たされているか、両方とも満たされていないときには、全体として偽
(false) になります。
C言語や C++ においては、条件式で排他的論理和を使うために、ブール値を得られるような演算子はありません(前述した
^
を使って、ビット単位の排他的論理和を得ることしかできない)。排他的論理和
x xor y
は、論理積(and) と論理否定(not)
を使って、(not x) and y or x and (not y)
と変形できるので、これを利用して記述できます。
bool b1 = x >= 0; // 命題1
bool b2 = y == 0; // 命題2
// 命題1・2の排他的論理和
if (!b1 && b2 || b1 && !b2) {
// 真
}
else {
// 偽
}
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |