コンピュータはどうやって考える?:論理演算と基本的な演算処理
コンピュータは、すべての情報を「0」と「1」の組み合わせ(2進法)で処理しています。では、その「0」と「1」を使って、コンピュータはどうやって計算したり、複雑な判断をしたりしているのでしょうか?
その鍵を握るのが、今回学習する「論理演算(ろんりえんざん)」です。最初は難しく感じるかもしれませんが、パズルを解くような感覚で進めていけば大丈夫ですよ!
※この章は「コンピュータと情報の内部表現」という大きなセクションの一部です。前後の「2進法」や「計算誤差」の話と深く関わっています。
1. 論理演算の基本(3つの基本回路)
論理演算とは、\(0\)(偽・OFF)と\(1\)(真・ON)の信号を組み合わせて、新しい結果を導き出す計算のことです。基本となるのは次の3つです。
① NOT(否定)演算
入力を反対にするだけのシンプルな演算です。
- 入力が \(1\) なら、出力は \(0\)
- 入力が \(0\) なら、出力は \(1\)
② AND(論理積)演算
2つの入力が両方とも \(1\) のときだけ、出力が \(1\) になります。
- \(1 \text{ AND } 1 = 1\)
- \(1 \text{ AND } 0 = 0\)
- \(0 \text{ AND } 1 = 0\)
- \(0 \text{ AND } 0 = 0\)
③ OR(論理和)演算
2つの入力のうち、少なくとも一方が \(1\) であれば、出力が \(1\) になります。
- \(1 \text{ OR } 1 = 1\)
- \(1 \text{ OR } 0 = 1\)
- \(0 \text{ OR } 1 = 1\)
- \(0 \text{ OR } 0 = 0\)
【よくある間違い】
日常会話の「AまたはB」は「どちらか一方」という意味で使われることが多いですが、情報ⅠのOR(論理和)は「両方とも1」の場合も結果は1になることに注意しましょう!
2. テストによく出る!XOR(排他的論理和)
基本の3つに加えて、試験で非常によく狙われるのがXOR(排他的論理和)です。
これは、2つの入力が異なるときだけ \(1\) になり、同じときは \(0\) になる演算です。
【XORの真理値表イメージ】
- \(1 \text{ XOR } 1 = 0\) (同じなので \(0\))
- \(1 \text{ XOR } 0 = 1\) (違うので \(1\))
- \(0 \text{ XOR } 1 = 1\) (違うので \(1\))
- \(0 \text{ XOR } 0 = 0\) (同じなので \(0\))
3. 真理値表(しんりちひょう)の書き方
複雑な演算を整理するために使うのが「真理値表」です。すべての入力パターンの結果を表にまとめたものです。
【例:ANDの真理値表】
(入力A, 入力B → 出力X)
\(A=0, B=0 \implies X=0\)
\(A=0, B=1 \implies X=0\)
\(A=1, B=0 \implies X=0\)
\(A=1, B=1 \implies X=1\)
豆知識:
真理値表を書くときは、入力の数字を \(00, 01, 10, 11\) のように「2進法の小さい順」に並べると、書き漏らしがなくなってスッキリしますよ!
4. なぜ論理演算が必要なの?(演算処理の仕組み)
コンピュータの内部にあるCPU(中央処理装置)は、これらの論理演算を組み合わせて「足し算」を行っています。
例えば、\(1\) ビット同士の足し算を考えてみましょう。
\(0 + 0 = 0\)
\(0 + 1 = 1\)
\(1 + 0 = 1\)
\(1 + 1 = 10_{(2)}\) (答えは \(0\) で、\(1\) 繰り上がる)
この結果をよく見ると……
・1の位の結果はXORと同じ!
・繰り上がりの有無はANDと同じ!
ということがわかります。このように、論理演算を組み合わせることで、コンピュータは複雑な計算を実現しているのです。
【ポイント:論理演算の役割】
コンピュータの中では、「論理演算回路(ゲート)」と呼ばれる小さな部品が、何十億個も組み合わさって動いています。私たちがスマホで動画を見たりゲームをしたりできるのは、この一瞬の「\(0\) と \(1\) の論理判断」の積み重ねのおかげなのです。
5. まとめと学習のアドバイス
今回の重要ポイント:
1. NOT:反対にする。
2. AND:両方 \(1\) なら \(1\)。
3. OR:どちらか \(1\) なら \(1\)。
4. XOR:違うときだけ \(1\)。足し算の基本!
5. 真理値表:すべてのパターンを網羅した表のこと。
「論理演算」は、この後に学習する「プログラミング」の条件分岐(if文など)でも必ず使います。今のうちにしっかりマスターしておくと、あとの学習がグッと楽になりますよ!
まずは基本の4つの動きを、パズルを解くように何度も確認してみてくださいね。応援しています!