コンピュータの中で2進数の計算はどうやっているのか?
コンピュータの中のCPUで演算が行われています。このCPUを一番小さいレベルにまで分解すると、2つの異なる種類(N型とP型)の半導体になります。単体では、Nは電気を通し、Pは電気を通しません。しかしこのNとPを組み合わせると電気を通したり、通さなかったりする不思議な特徴を持つようになります。電気はPからNには流れますが、NからPには流れないようになるのです。これをPN接合(ダイオード)といい、一方向にしか電流が流れないようにすることを「整流作用」といいます。

P型半導体は、電圧をかけると、一部がNに変化するという特性を持ちます。

この性質を用いて次のような回路を組み合わせると、一つの回路に電気が流れると、もうひとつの回路も電気が流れるという仕組みができあがります。これはNPNトランジスタと呼ばれます。

このような回路を組み合わせると、AとBの両方が流れるとメインの回路に電流が流れる「AND回路」や、AかBかどちらかの回路が流れるとメインの回路に電流が流れる「OR回路」を作ることができます。

コンピュータの中には、極めて多くのこのような半導体の構造が組み込まれた集積回路と呼ばれるチップが存在し、ON/OFF、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進数の足し算で「和」の部分を計算
- 暗号化: データの暗号化と復号化
- エラー検出: データが正しく送信されたかのチェック
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が「桁上がり」を正確に計算していることが分かります。
この半加算回路を複数個組み合わせることで、何桁でも加算できる全加算回路が作れます。さらに全加算回路を応用すれば、減算・乗算・除算も可能になります。
7. コンピュータでの実際の応用
これらの論理回路は、現実のコンピュータで以下のように活用されています:
- CPU内の演算ユニット:数値計算や論理演算
- メモリ回路:データの保存と読み出し
- 制御回路:プログラムの実行制御
- グラフィック処理:画像の色計算や変換
例えば、スマートフォンで写真を撮る時、画像の明るさ調整やフィルター処理も、最終的にはこれらの基本的な論理回路の組み合わせで実現されています。

コメント