なぜコンピュータは「0」と「1」だけで計算できるのか?
私たちが普段使っている10進数(0〜9)に対して、コンピュータは2進数(0と1)だけを使います。なぜでしょうか?
電子回路では、電流が「流れている」状態と「流れていない」状態の2つしか確実に区別できません。この2つの状態を「1」と「0」に対応させることで、確実で高速な計算が可能になります。人間の脳が複雑な思考を神経細胞の「興奮」と「非興奮」の組み合わせで行うように、コンピュータも「0」と「1」の組み合わせですべての計算を実現しています。
1. 論理回路とは
コンピュータでは、「0」と「1」という2つの信号で演算や制御を行います。この演算や制御を行う回路を論理回路といいます。
基本的なものに、論理積(AND)回路、論理和(OR)回路、否定(NOT)回路があります。驚くべきことに、コンピュータはこれら3つの論理回路の組み合わせだけで、加算・減算・乗算・除算はもちろん、画像処理や人工知能まで、すべての計算を行うことができます。
これは、どんな複雑な論理も最終的にはこれら3つの基本操作に分解できるためです(ブール代数の理論)。
2. 論理積(AND)回路
AND回路は、2つの入力と1つの出力をもつ回路で、2つの入力がともに1の時だけ、出力信号が1になる回路です。
身近な例で考えてみましょう。図1のような直列の回路をイメージしてください。
AND回路の概念図
スイッチA ─── スイッチB ─── ランプL
- スイッチを入力とし、ON = 「1」、OFF = 「0」
- ランプを出力とし、点灯 = 「1」、消灯 = 「0」
スイッチAとスイッチBがともにON(1)の時、ランプL が点灯(1)します。一方、どちらか一方でもOFF(0)なら、ランプLは消灯(0)となります。
日常の例: 「宿題を終えた」かつ「部屋を片付けた」時だけゲームができる、というルールと同じです。
AND回路の真理値表
| 入力A | 入力B | 出力L |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
AND回路の図記号
A ───┐
│&── L
B ───┘
3 論理和(OR)回路
OR回路は、2つの入力と1つの出力をもつ回路で、入力のいずれか一方が1であれば、1を出力する回路です。
図3のような並列回路をイメージしてください。
OR回路の概念図
┌─ スイッチA ─┐
│ │
───────┤ ├─── ランプL
│ │
└─ スイッチB ─┘
スイッチAとスイッチBのどちらか一方でもON(1)なら、ランプLは点灯(1)します。両方がOFF(0)の時だけ、ランプLは消灯(0)となります。
日常の例: 「電車で行く」または「バスで行く」なら学校に着ける、というのと同じです。
OR回路の真理値表
| 入力A | 入力B | 出力L |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
OR回路の図記号
A ───┐
│≥1── L
B ───┘
「≥1」は「1以上の入力が1ならば出力が1」という意味で、OR回路を表す記号です。
4 否定(NOT)回路
NOT回路は、1つの入力と1つの出力をもつ回路で、入力した信号を反転した値を出力します。
物理的には、スイッチがOFFの時にランプが点灯し、スイッチがONの時にランプが消灯する回路です。これは「常時閉回路」と呼ばれる仕組みで実現できます。
日常の例: 「雨が降っていない」時だけ外で遊ぶ、というルールと同じです。
NOT回路の真理値表
| 入力A | 出力L |
|---|---|
| 0 | 1 |
| 1 | 0 |
NOT回路の図記号
A ───○─── L
(○は否定を表す記号)
5 排他的論理和(XOR)回路
これまでに学んだAND、OR、NOTの3つの基本回路に加えて、**XOR(排他的論理和:Exclusive OR)**という重要な論理回路があります。
XOR回路は、2つの入力と1つの出力をもつ回路で、入力のうちどちらか一方だけが1の時に、出力が1になる回路です。
XORと通常のORの違い
通常のOR回路との違いを比較してみましょう:
| 入力A | 入力B | OR出力 | XOR出力 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 0 |
- OR: 「AまたはB(両方でも可)」
- XOR: 「AまたはB(ただし両方は除く)」
日常の例:
- OR: 「数学が得意」または「英語が得意」→ 両方得意でも良い
- XOR: 「電車で行く」または「バスで行く」→ 両方は同時に使えない
XOR回路の図記号
A ───┐
│=1── L
B ───┘
「=1」は「ちょうど1つの入力が1のときに出力が1」という意味で、XOR回路を表す記号です。
XORの作り方
XOR回路は基本的な論理回路の組み合わせで作ることができます。 「(NOT A AND B) OR (A AND NOT B)」という論理式で表現できます。
つまり:
- 「Aが0でBが1」または「Aが1でBが0」の時に出力が1
XORの重要性
XOR回路は以下の場面で重要な役割を果たします:
- 加算回路: 2進数の足し算で「和」の部分を計算
- 暗号化: データの暗号化と復号化
- エラー検出: データが正しく送信されたかのチェック
練習問題1
以下の論理回路の真理値表を完成させなさい。
A ───┐
│&──┐
B ───┘ │
│≥1── L
C ───────┘
この回路は「(A AND B) OR C」を表しています。
解答:
| A | B | C | A AND B | (A AND B) OR C |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 1 |
| 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 |
6. 半加算回路 – 論理回路による計算の実現
AND回路、OR回路、NOT回路を組み合わせることで、実際の計算ができることを確認しましょう。
以下は半加算回路と呼ばれる回路で、2進数の1桁の足し算を行います。
A ───┐
│&── C (桁上がり)
B ───┘
A ───┐
│=1── S (和)
B ───┘
この回路では:
- AND回路が「桁上がり」を計算
- XOR回路が「和」を計算
なぜXORが「和」になるのでしょうか?2進数の1桁加算を見てみましょう。
2進数の1桁加算のルール
- 0 + 0 = 0
- 0 + 1 = 1
- 1 + 0 = 1
- 1 + 1 = 10(2進数では「2」は「10」と表現)
半加算回路の真理値表
| 入力A | 入力B | AND結果(桁上がり) | XOR結果(和) | 2進数での計算 |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0+0=0 |
| 0 | 1 | 0 | 1 | 0+1=1 |
| 1 | 0 | 0 | 1 | 1+0=1 |
| 1 | 1 | 1 | 0 | 1+1=10 |
確認してみましょう:
- 0+0=0:桁上がりなし(0)、和は0 → AND=0, XOR=0 ✓
- 0+1=1:桁上がりなし(0)、和は1 → AND=0, XOR=1 ✓
- 1+0=1:桁上がりなし(0)、和は1 → AND=0, XOR=1 ✓
- 1+1=10:桁上がりあり(1)、和は0 → AND=1, XOR=0 ✓
このように、XORが「和」、ANDが「桁上がり」を正確に計算していることが分かります。
この半加算回路を複数個組み合わせることで、何桁でも加算できる全加算回路が作れます。さらに全加算回路を応用すれば、減算・乗算・除算も可能になります。
練習問題2
3つの入力A、B、Cすべてが1の時だけ出力が1になる論理回路を、AND回路を使って設計し、真理値表を作成しなさい。
解答:
回路設計:
A ───┐
│&──┐
B ───┘ │
│&── L
C ───────┘
または
A ───┐
│&── X
B ───┘
X ───┐
│&── L
C ───┘
真理値表:
| A | B | C | 出力L |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 |
解説: 3入力のAND回路は、2入力のAND回路を2つ組み合わせて作ることができます。最初のAND回路でAとBを処理し、その出力と入力Cを2番目のAND回路で処理します。
練習問題3
排他的論理和(XOR)回路を、基本的な論理回路(AND、OR、NOT)の組み合わせで設計しなさい。
ヒント: XORは「(NOT A AND B) OR (A AND NOT B)」で表現できます。
解答:
XOR回路は「(NOT A AND B) OR (A AND NOT B)」で作れます。段階的に作ってみましょう。
ステップ1: まず必要な部品を準備
A ───○─── NOT A (Aの否定)
B ───○─── NOT B (Bの否定)
ステップ2: 2つのAND回路を作る
NOT A ───┐
│&── X (NOT AかつB)
B ───────┘
A ───────┐
│&── Y (AかつNOT B)
NOT B ───┘
ステップ3: 最後にOR回路で合成
X ───┐
│≥1── L (XまたはY)
Y ───┘
完成した回路:
A ───○───┐
│&──┐
B ───────┘ │
│≥1── L
A ───────┐ │
│&──┘
B ───○───┘
真理値表:
| A | B | NOT A | NOT B | (NOT A AND B) | (A AND NOT B) | XOR出力L |
|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 0 | 0 | 0 | 0 |
解説: XOR回路は「(NOT A AND B) OR (A AND NOT B)」として実現できます。つまり、「Aが0でBが1」または「Aが1でBが0」の時に出力が1になります。これにより、どちらか一方だけが1の時に出力が1となり、両方が1の時は出力が0になります。
7. コンピュータでの実際の応用
これらの論理回路は、現実のコンピュータで以下のように活用されています:
- CPU内の演算ユニット:数値計算や論理演算
- メモリ回路:データの保存と読み出し
- 制御回路:プログラムの実行制御
- グラフィック処理:画像の色計算や変換
例えば、スマートフォンで写真を撮る時、画像の明るさ調整やフィルター処理も、最終的にはこれらの基本的な論理回路の組み合わせで実現されています。
まとめ
- コンピュータは電子回路の特性を活かし、確実に区別できる2つの状態(0と1)だけを使用
- AND、OR、NOTの3つの基本論理回路で、あらゆる計算が可能
- 論理回路の組み合わせにより、加算から複雑な処理まで実現
- 現代のすべてのデジタル機器が、この原理で動作している

コメント