2007.05.19
  • twitter
  • facebook
  • はてなブックマーク
  • 印刷

電気で計算をする

株式会社オーグメント 代表取締役 渡辺 俊雄

オリビアさん、霧が晴れたということは、たぶんご存知ということですね。/(^^;

さて、電気を使ってどのように計算をするのでしょうか。ここでは、簡単な回路図を使ってご説明しましょう。難しく考えずに、ちょっとしたパズルを解くつもりでお読みいただけると嬉しいです。(^^)

前回ご紹介したブール代数演算を実現するには、そのための回路が必要です。たとえば、電気が流れると電気が流れる回路は、最初の図のAのようにすると実現できます。赤の矢印で示したスイッチを押すと電気が流れ、茶色の電磁石(見えない?)が上のスイッチを引っ張りますので上の回路に電気を流します。電気が流れると電気が切れる回路は、最初の図のBのように、普段はつながっているスイッチを引き離すようにすればいいわけです。ただ、こうした回路は本質的に重要な話ではないので、ここでは「ああっ、作ろうと思えばいろいろな方法で実現できるんだな」とだけ思っていただければけっこうです(実際には、もっと高度に設計されますし……)。

では、本題の「計算する回路」を考えてみましょう。二つめの図を見てください。何やら複雑そうな図がありますが、ひとつずつは簡単ですから地道につきあってください。

図の中身は、青で書いた矢印が入力になります。緑が演算回路、そして赤が出力です。では、分かりやすくするために、ケースごとにステップを追いながら見ていきましょう。前回のブール演算の表を手元に置きながら見るとより良いかと思いますが、そうでなくても大丈夫なようにご説明します。実際に、値を入れてなぞりながら試してみると実感できると思いますのでやってみてください。(^^)


◆“0+0=0”
最初に、ゼロとゼロ(以降“0”と記述します)を双方に入力してみましょう。“AND”の回路は双方の入力が“1”のときだけ“1”を出力しますから、桁上がりのところにある“AND”回路は出力が“0”(桁上がり無し)になります。

続いて、演算結果のほうを見てみましょう。“NOT”は入力を反転する回路ですが、その結果を含めて“AND”の回路に入るのは“0”と“1”ですから、その出力は“0”となります。“OR”の回路は入力のどちらか一方が“1”であれば“1”を出しますが、ここでの入力は双方が“0”ですので出力も“0”となります。入力の両方を“0”にしたときに、演算結果“0”、桁上がり“0”になりましたでしょうか。;-)

◆“0+1=1”
次に、“0”と“1”を入力してみましょう(対称的な回路なので値を交換しても一緒になります)。桁上がりは“0”と“1”の“AND”ですから、その出力は“0”となります。

演算結果のほうは、値が“0”の側の“NOT”回路で“1”が出力され、もう一方の入力側の“1”が組み合わさり“1”が出力されます。この結果、“OR”回路の入力は“0”と“1”となり、結果として“1”が出力されます。入力を“0”と“1”にした場合、その結果は演算結果“1”、桁上がり“0”になります。

◆“1+1=10”
では最後に、“1”と“1”を入力してみましょう。桁上がりは“AND”回路の入力が双方とも“1”ですから、出力も“1”(桁上がり有り)となります。

演算結果のほうは、“NOT”回路によって“AND”回路の入力の一方が必ず“0”になります。ですので、その出力は“0”となり、演算結果も“0”となります。入力の両方を“1”にしたときには、演算結果は“0”、桁上がりが“1”となり“1+1=10”となります。


いかがでしょう。こんな単純な回路で足し算のようなことができてしまうんですね。回路が単純ですから高速化も容易です。次回も、もう少しこの話をしていきましょう。(^^)
UCHI_B04_1.jpgUCHI_B04_2.jpg

渡辺 俊雄(わたなべ としお)

株式会社オーグメント 代表取締役
1958年、東京生まれ。メーカー系システムエンジニア、大手コンピュータ出版社の書籍編集者、インターネット関連組織の広報などを経て2006年に独立。大学生と高校生の二人の子どもを持つ。

ご意見・ご要望、お待ちしています!

この記事に対する皆様のご意見、ご要望をお寄せください。今後の記事制作の参考にさせていただきます。(なお個別・個人的なご質問・ご相談等に関してはお受けいたしかねます。)

pagetop