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

なぜ2進数を学ぶのか?

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

現在のコンピュータは、その内部で2進数を使っていることは良く知られています。しかし、なぜ2進数なのかはあまり知られていないようです。ですので、今回から何回かに分けて、コンピュータがなぜ2進数を使うのかという点についてお話ししていきたいと思います。理解の促進のために、誤解を恐れず、やや誇張した表現や例え話などを用いますが、その点はご容赦ください。では、本題に。(^^)

私たちは普段、10進法(十進記数法)を使っています。コンピュータが10進法を直接扱うためには、10の状態を作り出す必要があります。つまり、1ボルト(V)の電圧のときに“1”を、2Vのときに“2”をというように、機械的に固有で、判定可能な状態を作り出さなければいけません。

ここで、その状態について、電気の特性も含めて考えてみましょう。電気を流すとき、たとえば5Vの電圧を作り出すとします。0Vの状態から5Vの電圧をかけて電気が流れるまでには、ほんの少し立ち上がりの時間がかかります(図1、小さくてごめんなさい)。

ゆっくりと時間をかけて5Vの状態を作り出すことは可能ですが、短時間でそれを済ませ、次の瞬間に1Vの状態を作り出さなければいけないとしたらどうでしょう。安定した5Vの状態を作り出し、それを装置に検出させて1Vに移行するためには、それぞれの移行時に立ち上がりや立ち下がりの時間、安定状態を作り出すための一定の時間が必要になります。

立ち上がりや立ち下がりの時間を極力短くしようとすると、急激な電圧変化を発生させる仕組み(たとえば、より大きな電圧やマイナスの電圧を使って引っ張るといった方法)を用いることになります。その場合、その仕組みの中では厳密にぴったりと目的とする状態に合わせることは難しくなります。急激に加速して、所定の位置に止まることを考えてみてください。図2の拡大部分のように、いったん必要な電圧近くまで持って行き、その後微調整をするという形では、信号を高速化するためのハードルが高いのです。

ここでご理解いただきたいことは、多様な状態を扱う仕組みは高速化に向かないという点にあります。では、状態を表すために2値を使うとどうなるでしょうか。2値を扱うためには、2つの状態を区別できればいいわけですから、たとえば高い電圧で流れているか、低い電圧で流れているかというように非常に区別しやすい状態を使うことができます。

流れる電圧を単純に高くしたり低くしたりすることは容易に行えますし、その状態検出も容易です。そのため、高速化も容易になります。これが、コンピュータが2進数を使う理由のひとつです。

さて、ここで「理由のひとつ」と書きましたが、他にももっと大きな理由があります。実は、2値のみを使うと「演算がすごく単純になる」のです。どのくらい単純になるかというと、たとえば私たちが普段から計算の基本として使っている四則演算が無くなります。

四則演算が無くなるって、じゃあ、どうやって計算をするんだと思われるかもしれません。でも、信じてもらえないかもしれませんが、コンピュータって、足し算はできても、引き算はできないんです(笑)。

こうした話は機会を見ながら後述していくことになりますが、次回はそのための基礎知識として「ブール代数」を簡単にご紹介します。実は、この部分こそが、本当の意味で「なぜコンピュータが2進数を使うのか」を理解するためのキモなんですよ。
UCHI_B02_1.jpgUCHI_B02_2.jpg

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

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

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

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

pagetop