タイトルAround the System and Development》0と1カテゴリーAround the System and Development
作成日2002/2/13 15:30:27作成者新居雅行
コンピュータは0と1で動くとか言われる。嘘ではないのだけど、そうした分かりやすい言葉だけが一人歩きするのが関の山で、○と×のどちらかでないと判断できない人を「コンピュータのよう」だとか、さらに転じて石頭だとか01思考とか、まあそうなるものだ。いずれにしても、コンピュータが思った通りに動かないで、「もう少し融通聞かせろよ」なんていうと、したり顔で「コンピュータは0と1だけだからね」という人がでてくるしまつ。でもそれで何となく納得してしまう? ってのはよくない! 今回は0と1というのがどういう意味を持つのかをちょっとじっくり説明したい。いちおう、理系以外でも分かってもらえるように書くつもりだ。

コンピュータに電源が必要なのはよく御存じだろう。つまり、電気で動く機械なのだ。一般に電子回路などと言われているものが中につまっている。これを言って分かりやすくなるかどうかは定かではないが、電子回路は「トランジスタ」という部品を中心にそれがたくさん集まって構成されている(もっと昔は真空管が主流)。テレビもやっぱりトランジスタが基本要素だ。トランジスタを使えば、たとえば、レコード針でピックアップしたレコード盤上の波、つまり音のもとになるものを、スピーカーを鳴らすほどの大きな電力に増幅するというようなことができる。この増幅というのは「結果的にそのようになる」という意味での動作であり、正確にはもう少し違うのだけど、実際に電子回路を設計するときには、例えば、レコードのピックアップが取り出す数ミリボルトの交流電圧を、数ボルト程度に大きくすることで大きな音として鳴るのは確かなので、「増幅器」などと呼ばれているのである。
もともとはこうした正確に何倍、何十倍という増幅を行うことに使われていたのがトランジスタなのであるが、このトランジスタをスイッチ代わりに使うということを行うことになる。実は正しくは、こうしたことをやりはじめたのは真空管の時代である。だから、当初は真空管を使ってスイッチを作ろうとしたのである。(誰がいつというのは諸説あるが1930年代に確立されており、代表的な研究者がツーゼやアタナソフである。)それ以前には、電磁石で接点をつけたり離したりといった部品(リレー)があったのだが、それを電子回路を構成する部品でやろうとしたのである。機械部品よりより高速に信頼性が高いというところを見ていたわけだ。
ところで、スイッチとは? これはよく御存じのように、オンとオフの2通りの状態しかないものである。ここでは仮にオンを1、オフを0という数字で記述するとしよう。その方が簡便だからだ。そうすると、スイッチを入れたり切ったりを表現すると、101010101…みたいなことになる。ここで、スイッチを入れたり切ったりとかいった物理的な現象を数字に置き換えるという「抽象化」をしたところに大きな意味がある。
ところで電灯のスイッチは、オンにしたらオンになりっぱなしである。もちろん手で押さえておく必要のあるものもあるが、電灯のスイッチを思い浮かべていただきたい。実はこの電灯のスイッチは、オン/オフのコントロールだけではなく、その状態を保持するという機能も備えている。同じような機能を、電子回路のスイッチで実現する方法を考案した人がいる。その回路は「フリップフロップ」と呼ばれているが、現在のコンピュータでも、このフリップフロップという原理は重要である。つまり、メモリの1つの重要な動作原理なのである。こうして電子回路で、スイッチからさらにオン/オフの状態を保持するというところまでできるようになったわけだ。(フリップフロップは1919年EcclesとJordanが考案したので、電子回路で2進数を扱うより以前に発明されている。)

それじゃあ、こうした回路をたくさんつなぎあわせて複雑な計算を…と考えるのは簡単だが、いろいろな機能を追加する毎にトランジスタやフリップフロップをこうつないで、ああつないで…とやってはいられない。いちいち電流の計算をしながら、4桁の足し算の回路を作るなんてことは不可能ではないだろうけど、もっといい方法を考えた人がいる。
それは、スイッチの状態や、あるいはフリップフロップの状態を1と0の数字に置き換えて、設計ができないだろうかということである。すでにそうした現象を記述する道具、つまり数学の理論体系は19世紀にすでに出来上がっていた。ブール代数と言われるもので、そうした数学を適用することで、電流がどう流れて…とか、トランジスタと抵抗をどうつなげて…といった物理的なことをまったく考えなくても、全体の動作を設計できるようになったのである。つまり、0と1というごくシンプルな体系で仕切り線を引く、そして0と1の世界では、0と1の世界の考え方だけで進めればいいだけになる。(基本的な考え方は1937年のシャノンの論文による。)もちろん、その背後でトランジスタをつないで電流を流す人はいるのだが、それは、0と1の世界で作り上げた設計図に従って置き換えればいいということになる。こうして、電子回路が「デジタル回路」へと変ぼうを遂げ、電子工学は「情報工学」という新たな分野を生み出すのである。
一方、こうした0と1の状態を保持できれば、それを何桁か集めれば、数字や文字などを記憶できるということになる。これについては別のテーマとして取り上げるが、さらにこうした記憶したものを、あるステップを経て、変換する、つまり、2つの数値を加えるとか引くとかいったことができることは、実は電子回路以前の機械式の計算機の時代にある程度は技術が開発されていた。おそらくそうした技術的な背景に電子回路というテクノロジーが合流して現在の形のコンピュータになってきたのだろう。機械式計算機では手回ししてステップを進めるのだが、それと同じように、電子回路上でステップを進めるということで、記憶した状態を変化させるということが組み込まれるようになる。
いずれにしても、0と1という単純化のおかげで、極端に言えば電子回路の動作は何も知らなくても、計算処理を行う機械を設計できるようになった。「電子工学」から切り離されて「情報工学」という世界が広がったのである。そして、いきなりジャンプするが、今日のコンピュータの発展があるわけである。
関連リンク