2026.5.11
Tのつぶやき
最も基本的な素子とは(連載03/4)

でも、このANDとORとNOTもNAND(NOT+AND)というゲート一つであらわされています。
それは、NAND素子が最も作りやすい単純な回路でできているということと、NAND素子だけで他のすべての素子を作ることができるからです。
NAND素子は入力が2つに出力が1つの部品でしたよね。
A nand B → Q
0 nand 0 → 1
0 nand 1 → 1
1 nand 0 → 1
1 nand 1 → 0
このAとBの二つの入力端子をひとつにまとめてみると、こんな風になります。
0 nand 0 → 1
1 nand 1 → 0
0と1 1と0 の組み合わせはできないのです。つまり、
not 0 → 1
not 1 → 0
と同じになります。

また、入力ひとつに出力が一つ。0入力なら1、1入力なら0。これはNOTと同じです。
では、このNOTを、NANDの出力Qのあとにつなぐと、以下のようになります。
0 nand 0 → 1 not → 0
0 nand 1 → 1 not → 0
1 nand 0 → 1 not → 0
1 nand 1 → 0 not → 1
0 and 0 → 0
0 and 1 → 0
1 and 0 → 0
1 and 1 → 1
これは、ANDになりました。当然です。NANDとは、ANDの出力をNOTしたものなので、もう一回NOTすればANDに戻るのです。
また、入力AとBを一度NOT演算してからNANDしてみるとどうでしょうか。
(not 0) nand (not 0) → 1 nand 1 → 0
(not 0) nand (not 1) → 1 nand 0 → 1
(not 1) nand (not 0) → 0 nand 0 → 1
(not 1) nand (not 1) → 0 nand 0 → 1
これは、ORと同じです。
0 or 0 → 0
0 or 1 → 1
1 or 0 → 1
1 or 1 → 1
全部NANDだけでできてしましました。
突き詰めると非常に単純なのです。このように、NANDからANDやORやNOTを作れました。
足し算や引き算掛け算や割り算も作れます。また、それ以外の様々な演算のパーツを作っていけます。これが現代のコンピュータの基本原理です。
どれだけ複雑で高速であっても、基本はこの0と1の一桁です。この一桁の情報の単位をビットと呼びます。
ビットにはあいまいさはありません。0.5とか0.3なんて中途半端な数値が入る余地はありません。このビットで動作するのが現在のコンピュータの特徴です。
この動作原理を使わないコンピュータを考えよう。何か新しいことができるんじゃないかな。そう考えた人々がいます。
そのコンピュータ原理(のひとつ)が量子コンピュータです。

