現在使われているほとんどのコンピュータでは、半導体の集積回路が使われている。
半導体とは条件によって導体となったり絶縁体となったりするので、
電流を通したり切ったりする高速のスイッチとして働く。

半導体の動作原理は量子力学に基づいているが、個々の原子や分子
の状態を論理として使っているわけではない。
そのため、このような現在使われている計算機を
量子計算機と比較して、古典計算機と呼ぶことにする。

古典計算機の情報の単位はビットと呼ばれ、それは二つの状態をとり、
その二つの状態を$0$と$1$という記号で表す。

これは物理的には、電圧の高低、電流の有無、磁極の向きなどで表される。
このビットをいくつか合わせて、多数の情報を表現する。

たとえばこのビットが二つある、すなわち2ビットのとき、
$00,01,10,11$の4つの状態があり、4つの情報を表すことができる。
一般にビットが$n$個あるとき、$2^n$個の情報が表現できる。

この古典計算機で計算を行うということは、このビットの情報を操作する、
つまり0を1に、1を0に変えるような操作をするということである。

このような基本的な演算は古典的なゲートである、
NOT,AND,OR,XORなどによって実現できる。

例えばNOTゲートであれば図1.1のようである。


clip002.jpg

図1.1:古典的なNOTゲート

このようなゲートは物理的には半導体を用いたトランジスタなどによって実現できる。

計算の流れは、左から入力のビットである0か1、
すなわち電流が流れるか流れないかが入力され、
右に出力のビットである1か0、すなわち電流が流れないか流れるかが出力され、
それを計測し計算結果とする。

今の例では到底計算とはいえないが、上で述べた論理ゲートを組み合わせることによって、
加算回路や乗算回路、そして現在行われているような大規模で複雑な計算が可能になる。

古典計算機では入力、出力ともに0,1のみの値だけを扱うことができ、
それ以外の値は意味を持たない。
すなわち電流が半分程度流れている、といったことは計算に使うことができない。