「論理演算」って名前からして難しそうなんですけど…。
中身は「かつ」「または」「ではない」を0と1で計算するだけだよ。0を「いいえ(偽)」、1を「はい(真)」と読みかえれば、ふだんの会話と同じなんだ。
論理演算は「条件の組み合わせ」
「土曜日 かつ 晴れなら公園に行く」「雨 または 雪なら傘を持つ」のように、私たちは日常的に条件を組み合わせています。
コンピュータはこの「はい/いいえ」を 1(真)と0(偽) で表し、決まったルールで計算します。これが 論理演算 です。検索エンジンの「キーワードA AND キーワードB」も論理演算そのものです。
入力と出力のすべての組み合わせを一覧にした表を 真理値表 といいます。試験では、この表を読めるかどうかがカギになります。
AND(論理積):両方1のときだけ1
AND(論理積) は「AかつB」。両方が1のときだけ1 になります。かけ算(1×1=1、それ以外は0)と同じ結果なので「積」と呼びます。
OR(論理和):どちらかが1なら1
OR(論理和) は「AまたはB」。少なくとも一方が1なら1 になります。両方0のときだけ0です。
スイッチと電球の回路で考えると、違いがよくわかります。
NOT(否定):0と1をひっくり返す
NOT(否定) は入力が1つだけの演算で、1なら0、0なら1 に反転します。「晴れ ではない」のイメージです。
XOR(排他的論理和):違うときだけ1
XOR(排他的論理和) は「AとBの値が異なるときだけ1」になる演算です。ORと違い、両方1のときは0 になります。「どちらか一方だけ」と覚えましょう。
NAND・NOR:結果をNOTで反転したもの
- NAND = NOT (A AND B):ANDの結果をひっくり返す。両方1のときだけ0
- NOR = NOT (A OR B):ORの結果をひっくり返す。両方0のときだけ1
ここまでの演算を1つの真理値表にまとめます。
| A | B | AND | OR | XOR | NAND | NOR |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 |
- AND:1が「全員そろって」はじめて1(かけ算)
- OR:1が「1人でもいれば」1
- XOR:「意見が割れたら」1
- NAND・NOR:AND・ORの列を 0と1を入れかえるだけ
ORとXORの違いは「両方1」の行だけ。ORは1、XORは0。ひっかけ問題はほぼここを突いてくる。
ビット演算:桁ごとに計算する
2進数どうしの論理演算は、同じ位置の桁ごとに 計算します。繰り上がりはありません。2進数そのものの読み方は単元「2進数と基数変換」で確認しておきましょう。
特によく出るのが、ANDを使って 一部の桁だけを取り出す「マスク」 という使い方です。
1101 と 1011 を計算してみよう(左の桁から順に)
- AND:1と1→1、1と0→0、0と1→0、1と1→1 → 1001
- OR:1、1、1、1 → 1111
- XOR:0、1、1、0 → 0110
論理式の値を求める
(A AND B) OR (NOT C) のような式は、かっこの中から順に 0か1かを決めていきます。
A=1、B=0、C=0 のとき
- A AND B = 1 AND 0 = 0
- NOT C = NOT 0 = 1
- 0 OR 1 = 1
「NOT (A AND B)」と「NOT A AND NOT B」って同じですか?
違うんだ。NOT (A AND B) は (NOT A) OR (NOT B) と同じになる。かっこを外すときにANDとORが入れかわるんだよ。これをド・モルガンの法則というんだ。真理値表を書いて確かめてみるといいよ。
試験に出るポイント
- AND:両方1で1/OR:どちらか1で1/NOT:反転/XOR:異なれば1
- NAND・NORは、AND・ORの結果をNOTで反転したもの
- ビット演算は桁ごとに計算。ANDのマスクで特定の桁を取り出せる
- 論理式はかっこの内側から順に計算する
- 迷ったら真理値表を書いて全パターンを確かめる