プログラミングに必要な「論理演算」って何かな?
こんな疑問にお答えします。
- 【論理演算】プログラミングの「かつ、または、ではない」をわかりやすく解説
結論から言うと、論理演算とは「ある事象が正しい(真)か正しくない(偽)かを判断する演算(計算)のこと」です。
論理演算がわかっているとプログラミングの条件分岐を使いこなせるようになりますし、あらゆるプログラムで使われるほど基本的なことなので論理演算を理解することは必須です。
そんな論理演算をエンジニアの私がわかりやすく解説するので最後までご覧くださいm(_ _)m
【論理演算】プログラミングの「かつ、または、ではない」をわかりやすく解説
繰り返しですが、論理演算とは「ある事象が正しい(真)か正しくない(偽)かを判断する演算(計算)のこと」です。
図にするとこんなイメージで、2つの値を入力するとなにかしらの演算がされて1つの結果を出力します。
このときの入力と出力の値は真か偽のどちらかです。
コンピューターは情報(データ)を2進法で表現するので真を1、偽を0として扱います。
次はその「何かしらの演算」の種類(論理演算の種類)について解説しますね。
論理演算の種類
論理演算の代表的なものには次の4種類があります。
- 論理積(AND演算)
- 論理和(OR演算)
- 論理否定(NOT演算)
- 排他的論理和(XOR演算)
1つずつ解説します。
論理積(AND演算)、A かつ B
論理積は「入力のどちらも真(1)の場合のみ真(1)が出力される演算」です。
この関係を表にすると次のとおりです。AとBの2つが入力でCが出力です。
パターン | 入力 | 出力 | |
A | B | C | |
1 | 偽(0) | 偽(0) | 偽(0) |
2 | 偽(0) | 真(1) | 偽(0) |
3 | 真(1) | 偽(0) | 偽(0) |
4 | 真(1) | 真(1) | 真(1) |
また、この関係を図にするとこんな感じです。AとBの2つが入力で濃いオレンジ部分が出力です。
論理積を日本語では「A かつ B」、英語では「A AND B」と表現します。
つまり、「(A = 真) かつ (B = 真)のときに真になる」ということですね。
論理和(OR演算)、A または B
論理和は「入力のどちらかが真(1)なら真(1)が出力される演算」です。
真理値表は次のとおりです。AとBの2つが入力でCが出力です。
パターン | 入力 | 出力 | |
A | B | C | |
1 | 偽(0) | 偽(0) | 偽(0) |
2 | 偽(0) | 真(1) | 真(1) |
3 | 真(1) | 偽(0) | 真(1) |
4 | 真(1) | 真(1) | 真(1) |
ベン図は次の通りです。AとBの2つが入力で濃いオレンジ部分が出力です。
論理和を日本語では「A または B」、英語では「A OR B」と表現します。
つまり、「(A = 真) または (B = 真)のときに真になる」ということですね。
論理否定(NOT演算)、A ではない
論理否定は「入力の逆の値が出力される演算」です。
真理値表は次のとおりです。Aが入力でCが出力です。
パターン | 入力 | 出力 |
A | C | |
1 | 偽(0) | 真(1) |
2 | 真(1) | 偽(0) |
ベン図は次の通りです。Aが入力で濃いオレンジ部分が出力です。
論理否定を日本語では「A ではない」、英語では「NOT A」と表現します。
つまり、「A ではない(=Aの逆)」ということですね。
排他的論理和(XOR)
排他的論理和は「入力のどちらも真(1)もしくは偽(0)なら偽(0)が出力される演算」です。
真理値表は次のとおりです。AとBの2つが入力でCが出力です。
パターン | 入力 | 出力 | |
A | B | C | |
1 | 偽(0) | 偽(0) | 偽(0) |
2 | 偽(0) | 真(1) | 真(1) |
3 | 真(1) | 偽(0) | 真(1) |
4 | 真(1) | 真(1) | 偽(0) |
ベン図は次の通りです。AとBの2つが入力で濃いオレンジ部分が出力です。
排他的論理和は2つの数値が同じかどうかを判定することができます。同じなら真、違うなら偽ですね。
ただ、なかなか使い所が難しいのでこういうのがあるんだなぁくらいの認識で大丈夫です。
論理演算を使いこなそう!
以上をおさらいすると次のとおりです。
- 論理演算とは「ある事象が正しい(真)か正しくない(偽)かを判断する演算(計算)のこと」
- 論理演算の代表的なものには「論理積、論理和、論理否定、排他的論理和」がある
上記の通りです。
プログラミングでは処理を条件分岐するときに論理演算をよく使いますね。
- 人が近づく かつ 部屋が暗い ならライトを点ける
- 前方に車を検知する または 後方に人を検知する なら車を停止する
とかですね。
ぜひ、論理演算を使いこなしてプログラミングしてみてください(^_^)/~