風呂に入りながらフォン・ノイマンの『計算機と脳』を読んだ。
 アナログ計算機とデジタル計算機は全く違うと書いてあった。よくよく考えると全く違う。その通りだと思った。

 アナログ計算機とは、ダイヤルに数字が振ってあり、いわば実数を角度で表してあるようなものである。例えば、2+3を行うには、先ずダイヤルを0に設定し、2回し、次に3回すと、ダイヤルは5の所まで回っているので、それを読めばいい。
 引き算を行うには、たとえば8-5を計算するとすると、先ずダイヤルを0に設定し、先ず8回し、逆方向に5回すと、ダイヤルは3の所に止まっているので、答えは3である。
 ダイヤルでなくても良く、紙テープで数字が等間隔に書いてあるものを使っても、同様である。

 数字と、ダイヤルの角度や紙テープの長さを対応させて、加算と減算をダイヤルやテープの動かし方で行うというものである。これがアナログ計算機である。


 デジタル計算機とは、スイッチのONとOFFの2通りで数を表すという2進法の方が電子化し易いので、2進数で説明することにする。
 足し算は、0+0=0、0+1=1、1+0=1、1+1=10、の4つの一桁の足し算の表を作っておく、これを下の桁から各桁に準じ適応して計算して行く。たとえば、0010(2)+0011(3)=0101(5)である。


 引き算を行うには、この足し算の表と、ビット反転の表を使って行う。ビット反転とは、各桁を0なら1に、1なら0にする演算である。たとえば1101なら、0010である。
 引き算を行うには、引かれる数をビット反転し、足し算を行い、その答をビット反転すると引き算の答えになっている。


 たとえば、8-5を計算するとすると、二進数では
1000-0101
であるので、
 まず最初に引かれる数1000をビット反転し0111とする。
そして、
0111+0101
を計算する。
0111+0101=1100
この答1100を再びビット反転し0011とする。
0011は十進数では3である。

 このような対応表と手順に従って計算して行くのが、デジタル計算機である。

 以上、比較してみると、アナログ計算機とデジタル計算機は全く動作方式が異なる。

 昨今、日本の小中学校や高校ではコンピュータの授業を行っているらしいが、こうしたデジタル計算機(いわゆるコンピュータ)の動作原理を理解して教えている先生がどのくらいいるのかと思うと、頑張れ、小中高の教師と思ってしまう。