二進数と論理回路 〜なぜ人間と同じ10進数で作らなかったのか?電圧の妥協とスイッチの足し算〜
1. 素朴な疑問:なぜわざわざ「0と1」でややこしくするの?
コンピュータを学び始めると、誰もが最初にぶつかる壁が**「二進数(0と1だけの世界)」**です。 人間は普段、0から9までの数字を使う「10進数」で生活しています。
- 人間の「2」 = 二進数だと「
10」 - 人間の「5」 = 二進数だと「
101」 - 人間の「15」 = 二進数だと「
1111」
正直に言って、人間から見れば桁数がやたらと長くなって読みづらいだけです。 「コンピュータを作った天才たちは、なぜ人間と同じ10進数で動くパソコンを作ってくれなかったのか?意地悪なのか?」と思いませんか?
実は、コンピュータが二進数を使っているのは、高度でカッコいいからではありません。 むしろ逆で、**「現実世界の電気がいい加減すぎて、0と1の2択に逃げざるを得なかった(究極の妥協)」**というのが歴史の真実です。
2. 概念の芯:10段階の電圧を見分けるのは「物理的に無理」だった
コンピュータの中を流れているのは「電気(電圧)」です。 もし10進数でコンピュータを作ろうとすると、電線に流れる電圧を**0ボルトから9ボルトまで「10段階」**に細かく区切って使い分ける必要があります。
- 0V =「0」
- 1V =「1」
- 2V =「2」
- ……
- 9V =「9」
机の上の計算なら、これで完璧に見えます。 しかし、現実の電線の中を流れる電気は、気温の変化や周囲の電波、コードの長さによって、常にフラフラと揺れています(ノイズ)。
もし「2.0ボルト」を送ったつもりなのに、途中でブレて「2.6ボルト」になって届いたらどうなるでしょうか? コンピュータは「えっ、これは2なの?それとも3なの?」とパニックになり、計算結果が狂ってしまいます。
そこで技術者たちは、10進数をきっぱり諦めてこう言いました。 「中途半端な数字を見分けるのはやめよう!『電気が流れていない(OFF=0)』か『流れている(ON=1)』かの2択だけにすれば、多少電気がブレても絶対に読み間違えないじゃないか!」
二進数とは、電気の曖昧さに打ち勝つために人類が選んだ**「究極に安全なサボり方」**だったのです。
触って試す:二進数変換ドリル
🔢 二進数変換ドリル(4ビット)
お題の10進数を二進数で作ってください。各「位」のボタンを押すと、その位が 0 と 1 で切り替わります。位の重みは左から 8・4・2・1。ONにした位の合計が、お題の数と一致すれば正解です。
お題:10進数の ? を二進数にしよう
3. 本題:ただのスイッチを組み合わせると「足し算」が生まれる奇跡
「二進数しか使えない理由はわかった。でも、ONとOFFのスイッチだけで、どうやって足し算(計算)をするのか?」 ここがコンピュータ科学の最も美しいハイライトです。
二進数の「1桁の足し算」を、全部書き出してみましょう。パターンは世界に4つしかありません。
- $0 + 0 = 0$
- $1 + 0 = 1$
- $0 + 1 = 1$
- $1 + 1 = 10$ (※繰り上がって「2桁目の1」と「1桁目の0」になる)
この結果を、**「答えの1の位」と「繰り上がりの位」**に分けてじっと見つめてみてください。
| 入力A | 入力B | 答えの1の位(S) | 繰り上がりの位(C) |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 1 | 0 | 1 |
この表を見て、何か気づきませんか? 実は、電気のスイッチ(論理回路)の世界にある**「超有名な2つの部品」の動きと完全に一致している**のです。
① 繰り上がりの位 =「AND(かつ)」スイッチ
「入力Aと入力Bの両方がON(1)のときだけ、電球がつく」。 これは、直列につないだスイッチ(AND回路)そのものです。
② 答えの1の位 =「XOR(エックスオア / 排他的論理和)」スイッチ
「入力Aと入力Bのどちらか片方だけがONのときだけ、電球がつく(両方ONだと消える)」。 これは、階段の上下にある照明スイッチ(XOR回路)そのものです。
なんと、「ANDスイッチ」と「XORスイッチ」を並べて電線をつないだだけで、勝手に二進数の足し算マシンが完成してしまったのです。 この回路のことを、専門用語で**「半加算器(はんかさんき / Half Adder)」**と呼びます。
触って試す:半加算器シミュレータ
💡 半加算器シミュレータ
入力A・Bのボタンを切り替えてみてください。S(答えの1の位)はXOR回路、C(繰り上がりの位)はAND回路のランプです。上の真理値表と見比べながらどうぞ。
人間が頭で考えて計算しているのではなく、電気がスイッチの迷路を通り抜けた結果、出口の電球が「足し算の答えの形」に勝手に光ってしまう。これがコンピュータの計算の正体です。
4. コンピュータの世界に「引き算・掛け算・割り算」は存在しない
加算器が生まれたことで、コンピュータは足し算ができるようになりました。 では、引き算や掛け算はどうするのでしょうか?専用の「引き算回路」を作るのでしょうか?
いいえ、コンピュータはそんな面倒なことはしません。 すべて**「足し算の変装」**で片付けます。
- 引き算(減算):引く数をマイナスの数に変換(2の補数)して、足し算する。
- 例:「$5 - 3$」は計算せず、「$5 + (-3)$」として同じ足し算回路に通す。
- 掛け算(乗算):足し算を何回も繰り返す(または桁を左にずらす)。
- 例:「$5 \times 3$」は、「$5 + 5 + 5$」として足し算する。
- 割り算(除算):何回引けるか(何回足し算できるか)を数える。
私たちがスマホで観ている綺麗な動画も、ChatGPTが返す賢い受け答えも、一番底の底まで分解すれば、**「電気のノイズに怯えた人類が作った、ONとOFFのスイッチをカチカチ鳴らす足し算の山」**に過ぎないのです。
📝 3行で頭に入る「試験・実務の要点まとめ」
- 二進数と基数:電圧のノイズによる誤認識を防ぐため、コンピュータは「0(低電圧)」と「1(高電圧)」の二値(二進数)を採用した。16進数は、二進数4桁(
0000〜1111)を人間が見やすく1文字(0〜F)でまとめたもの。 - 基本論理回路:AND(両方1で1)、OR(どちらか1で1)、NOT(反転)、XOR(互いに異なるとき1)。
- 半加算器と全加算器:XORとANDを組み合わせた回路が半加算器(2数の足し算)。下位からの繰り上がりも考慮して3つの入力を足し合わせられる回路を全加算器と呼ぶ。