「論理和」という言葉はデジタル回路・プログラミング・集合論の学習で登場する基本的な論理演算のひとつです。
論理積との違いや記号の意味がわかりにくいと感じる方も多いかもしれません。
本記事では、論理和の意味と記号・論理積との違いを、OR演算・定義・覚え方・排他的論理和との違いを交えてわかりやすく解説します。
デジタル回路や論理演算を学んでいる方や基本情報技術者試験に取り組んでいる方にもきっと役立つ内容でしょう。
論理和を正しく理解することで、デジタル回路設計・プログラミング・集合論への理解が大きく深まります。
論理和とは「2つの入力のうちどちらか一方(または両方)が1(真)であれば1を出力する論理演算」のこと
それではまず、論理和の基本的な意味と定義について解説していきます。
論理和(ろんりわ)とは、2つ以上の入力値のうち少なくとも1つが1(真)であれば1(真)を出力し、すべての入力が0(偽)の場合のみ0(偽)を出力する論理演算のことです。
英語では「OR演算(Logical OR)」と表記され、「または」という日本語の意味に対応しているでしょう。
「AまたはBが真ならば真」という条件分岐は日常の論理思考でも頻繁に使われる概念で、デジタル回路・プログラミング・データベースのクエリなど幅広い分野で活用されています。
論理和は論理積(AND)・否定(NOT)と並んで論理演算の3大基本演算のひとつとして位置づけられているでしょう。
論理和の覚え方として「OR=オア=または」というシンプルな対応を覚えておくと便利です。「AまたはBが成立するか?」という日常的な問いかけが論理和の本質を表しています。
論理和の記号と表記方法
| 表記方法 | 記号・式 |
|---|---|
| 論理記号 | ∨(ブイ・ディスジャンクション)または+ |
| プログラミング(C・Java) | ||(論理OR)・|(ビットOR) |
| Python | or(論理OR)・|(ビットOR) |
| SQL | OR |
| 論理式 | A ∨ B または A + B または A OR B |
プログラミングでは||が論理OR(真偽値)・|がビットOR(ビット単位の演算)として区別されるでしょう。
論理和の真理値表
| 入力A | 入力B | 出力A OR B | 説明 |
|---|---|---|---|
| 0 | 0 | 0 | 両方0 → 0 |
| 0 | 1 | 1 | 少なくとも1つが1 → 1 |
| 1 | 0 | 1 | 少なくとも1つが1 → 1 |
| 1 | 1 | 1 | 両方1 → 1 |
「すべてが0の場合だけ0になる」という性質が論理和の特徴で、この点が論理積(AND)と逆の性質を持つでしょう。
論理和と論理積・排他的論理和の違い
続いては、論理和と論理積(AND)・排他的論理和(XOR)との違いを確認していきます。
3つの演算の違いを整理することで、論理演算全体の理解が体系化されるでしょう。
論理積(AND)との違い
論理積(AND)とは2つの入力がともに1(真)の場合のみ1を出力し、どちらか一方でも0(偽)の場合は0を出力する論理演算です。
論理和が「少なくとも1つが1なら1」であるのに対し、論理積は「すべてが1のときだけ1」という違いがあるでしょう。
【論理和と論理積の覚え方】
論理和(OR):「または」→ どちらかが1なら1
→「or(または)」という英語の意味通り
論理積(AND):「かつ」→ 両方が1のときだけ1
→「and(かつ)」という英語の意味通り
排他的論理和(XOR)との違い
排他的論理和(XOR)と論理和(OR)の違いは「両方が1の場合」の出力です。
OR演算では両方が1の場合でも1を出力しますが、XOR演算では両方が1の場合は0を出力するという点が最大の違いでしょう。
「inclusive OR(包含的OR)」が論理和、「exclusive OR(排他的OR)」が排他的論理和という対比で理解するとわかりやすいです。
3つの論理演算の比較表
| A | B | AND(論理積) | OR(論理和) | XOR(排他的論理和) |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
「1,1→0」の部分のみが論理和とXORで異なり、それ以外の行はOR=XORという点を覚えておくと区別しやすいでしょう。
論理和の活用場面
続いては、論理和が実際にどのような場面で活用されているかを確認していきます。
具体的な活用例を通じて論理和の重要性が実感できるでしょう。
プログラミングでの論理和の活用
プログラミングでは条件分岐・ビット操作・フラグ管理など様々な場面で論理和が活用されます。
【Pythonでの論理和の活用例】
論理OR(条件分岐):
if age >= 18 or has_permission:
print(‘アクセス許可’)
ビットOR(フラグの設定):
flags = 0b0000 # フラグの初期値
READ = 0b0001 # 読み取りフラグ
WRITE = 0b0010 # 書き込みフラグ
flags = flags | READ | WRITE # 複数フラグをセット
print(bin(flags)) # 0b0011(読み取りと書き込みが有効)
ビットORはフラグのセット・権限管理・カラーコードの合成など多様な場面で活用されているでしょう。
データベース(SQL)での論理和の活用
SQLのWHERE句でOR演算子を使った論理和による条件指定は基本的な操作のひとつです。
【SQLでの論理和の活用例】
SELECT * FROM products
WHERE category = ‘electronics’
OR price < 1000;
意味:カテゴリが’electronics’である、または価格が1000未満のどちらかを満たすレコードを取得
SQLでANDとORを組み合わせる際は括弧で優先順位を明示することで意図した条件を正確に表現できるでしょう。
集合論における論理和(和集合)
集合論では論理和は「和集合(∪)」に対応します。
集合AとBの和集合(A∪B)はAまたはBに属する要素すべての集合であり、これが論理和「AまたはBが真」という概念と対応しているでしょう。
ベン図では2つの円の合わさった部分全体(重なりを含む)が論理和を視覚的に表しています。
まとめ
本記事では、論理和の意味と記号・論理積との違いについて、OR演算・定義・覚え方・排他的論理和との違い・活用場面を交えながら解説しました。
論理和とは2つの入力のうち少なくとも1つが1であれば1を出力し、すべてが0の場合のみ0を出力する論理演算で、英語のOR(または)に対応します。
論理積(AND)が「すべてが1のときだけ1」であるのに対し論理和は「少なくとも1つが1なら1」という点が違いで、排他的論理和(XOR)とは「両方が1のときに1(OR)か0(XOR)か」で区別されるでしょう。
プログラミングの条件分岐・ビットフラグ管理・SQLの検索条件・集合論の和集合など幅広い分野で論理和は活用されています。
本記事が論理和への理解を深め、デジタル回路学習やプログラミングの実践に役立てば幸いです。