この講座では「2進数(にしんすう)」を取り上げます。コンピューターの内部で使われている2進数を学んで、コンピューターへの理解と愛着を深めることが目的です。

 「いまさら2進数なんて……」――そんな声が聞こえてきそうです。確かに2進数を知らなくても、コンピューターを使う上で困ることはありません。でも、2進数を知ることで、コンピューターにより親しみを感じることができるでしょう。

 「0と1だけで数値を表す方法だろ、知ってるよ」――そうおっしゃる人もいるでしょう。それでは質問です。なぜコンピューターは2進数を使うのでしょうか。2進数でマイナスの数を表すにはどうしたらよいでしょうか。小数点数(小数点がある数)についてはどうでしょう。コンピューターはこれらの値を、2進数でどのように表現しているのか、演算しているのかをすぐに答えられますか?

 10進数(じゅっしんすう)を日ごろ意識することなく使っている私たちにとって、2進数はなかなか奥が深いものです。コンピューターへの理解を深めるだけではなく、“数”というものを改めて考える良い題材でもあります。2進数をある程度理解している人にも、連載中一度は「なるほど」と思ってもらえるはずです。

 もちろん、「2進数という言葉は知っているが、よく分からない」という人にも理解してもらえるように、"ゼロ"から説明していきますので、ご心配なく。分からない人も、分かったつもりでいる人も、この機会に2進数をマスターしちゃいましょう!

10で桁上がりするから10進数

 人間である私たちが使っているのは「10進数」です。10進数とは、

0、1、2、3、4、5、6、7、8、9、10

と、10まで数えて桁(けた)上がりするから10進数(10で桁が進む数)と言うのです。10進数で使われる記号(数字を表すマーク)は、0~9の10種類です。「じゅう」を表す記号はなく、9→10のタイミングで桁上がりするわけです。10は、1と0という2つの記号で表されていますね。当たり前のことかもしれませんが、冷静になって「そもそも10進数って何だろう」と考えてみることが、2進数を理解する切り口となります。

 10進数の桁について考えてみましょう。ここでは、567という10進数の数値を例にします。567は「ご・ろく・なな」ではなく「ごひゃく・ろくじゅう・なな」と読みます。「ひゃく」とか「じゅう」は、10進数で桁を表す言葉です。それでは、桁とは何でしょう。もしも10進数を知らない宇宙人に「ジュッシンスウ・ノ・ケタ・トハ・ナンデスカ」と聞かれたら、どうしますか?

宇宙人:567トハ・ナン・デスカ?

地球人:「ごひゃく・ろくじゅう・なな」です。

宇宙人:???...5+6+7=18トイウ・イミ・デスカ?

地球人:いえいえ。567の5は「100が5個」、6は「10が6個」、7は「1が7個」を表しています。567全体で、5×100+6×10+7×1を表しています。

宇宙人:ナルホド! イチバン・ミギガ1・ソノツギガ10・ソノツギガ100・トイウヨウニ・スウジヲ・カク・イチ・ガ・ヒトツ・ヒダリニ・ズレルト・10バイニ・ナルノデスネ!

地球人:そうです。地球では、数字を書く位置のことを「桁(けた)」もしくは「位(くらい)」と呼んでいます。

宇宙人:ナカナカ・オモシロイ・アラワシ・カタ・デスネ!

 地球人の小学生は、桁のことを「1の位」「10の位」「100の位」と呼びます。地球人の大人である皆さんなら、1の位が「10の0乗の位」、10の位が「10の1乗の位」、100の位が「10の2乗の位」であることも分かりますね。これらの「10」の部分を「2」に置き換えたものが、2進数です。次からは、いよいよ2進数の説明です。

2で桁上がりするから2進数

 2進数も10進数と同じように考えることができます。10進数が10で桁上がりするのに対して、2進数では2で桁上がりします。そして、2進数では、0と1だけで数値を表します。つまり、

0、1、10

 のように、1まで数えると桁上がりして10になります。10を「じゅう」と読んだのでは、10進数の10と区別ができないので、2進数の10は「いち・ぜろ」と読みます。2進数の100なら「いち・ぜろ・ぜろ」です。2進数で0~100まで数えてみましょう。1の次が10に桁上がりし、11の次が100に桁上がりすることに注意してください。

0、1、10、11、100

 0と1だけの2進数でも、10進数と同様に、いくらでも数が数えられます。皆さんも図1を見ながら、「ぜろ」、「いち」、「いち・ぜろ」……と声を出して2進数で数を数えてみてください。10進数に比べて桁が多くなることにも注目してください。

図1●2進数で数えてみましょう

コンピューターが2進数を使う理由

 では次に、コンピューターの世界では、なぜ2進数のことが話題に上がるのかを説明しましょう。

 コンピューターがIC(Integrated Circuit=集積回路)と呼ばれる電子部品から構成されていることをご存知ですね。計算を行うCPU(プロセッサ)も、情報を記憶するメモリーも、その実体はICです。ICは、黒いボディーに何本もの銀色のピンが付いた「ムカデ」のような形状をしています。個々のピンに電気で情報(データやプログラム)が与えられることで、コンピューターが動作するわけです(図2)。

図2●複数のピンで複数桁の2進数を表す

 電気の単位がV(ボルト)で表されることもご存知ですね。例えば、皆さんの家庭には100Vの電気が来ています。それでは、ICを使って10進数の0~9という情報を表すには、どうしたらよいと思いますか。ICの1本のピンを10進数の1桁として、0V~9Vの電気で0~9を表すと思いますか?

 答えは、NOです。ICは、1本のピンで0Vと5V(他の電圧のペアを使う場合もあります)の2種類の電気しか取り扱えないようになっています。そういう仕組みになっているのです。

 この0Vが数字の0、5Vが数字の1を表していると考えれば、ICの1本のピンで2進数の1桁を表すことができます。つまり、ICは、複数のピンをセットで使って(64ビットコンピューターなら64本)、あらゆる情報を複数桁の2進数で表しているのです。皆さんが、キーボードから10進数で数値を入力したとしても、コンピューターの内部にあるICは、その数値を2進数で表して処理しているのです。図2を見て納得してください。

 なお、2進数で数値を表すときに、0101のように、上位桁が0であっても0を明示することがあります。例えば、0101を単に101とは書かない場合があります。これは、その2進数を表すのに、ICのピンを何本使っているかを明示するためだと考えてください。もしも8本のピンで1を表すなら、00000001という8桁の2進数にします。

ビットとバイト

 最後に、2進数にまつわるコンピューター用語を2つだけ覚えてください。それは、「ビット」と「バイト」です。ICのピン1本で表せる情報すなわち2進数の1桁を「ビット」と呼びます。2進数の8桁を「バイト」と呼びます。図3に示した10101100という8桁の2進数は、8ビットの2進数と呼ぶことも、1バイトの2進数とも呼ぶこともできます。

図3●ビットとバイト

 コンピューターにおいて、ビットは情報の最小単位であり、バイトは情報の基本単位です。ビット(bit)は、binary digit(2進数)の略語ですが、一般用語で「破片」という意味もあります。バイト(byte)は、同じ発音のbite(噛む)という言葉から作られた造語です。情報の破片がビットで、情報のひと噛み(ひとまとまり)がバイトというわけです。コンピューターは、バイト単位でデータを取り扱うことがよくあります。

 コンピューターの能力を、一度に処理できる情報量で表すことがあります。例えば、インテルCoreプロセッサを搭載したパソコンの処理能力は、64ビットです。インテルCoreプロセッサは、64桁の2進数を一度に処理できるのです。

 私たち人間は、10本の指を持っているので、10進数で数を数えます。それに対してコンピューターは、2本指で数を数える宇宙人のようなものです。皆さんがコンピューターに触れるということは、2本指の宇宙人と対話するのと同じです。2進数をマスターすれば、もっともっとコンピューターと仲良くなれますよ。

矢沢 久雄
グレープシティ アドバイザリースタッフ
システム開発を本業としつつ、講師業と著作業も精力的にこなしている。15年ほど前から、基本情報技術者試験の講師を始めて、現在では年間100回以上の講座を実施。ITを初めて学ぶ受験者のクラスを好んで担当し、分かりやすさと楽しさで、抜群の顧客満足度とリピート率を誇る。『基本情報技術者試験のアルゴリズム問題がちゃんと解ける本』『情報処理教科書 出るとこだけ!基本情報技術者』(翔泳社)や『プログラムはなぜ動くのか』(日経BP社)など、コンピューターやプログラミングに関する著書多数。
出典:2002/6 ITpro「ゼロから学ぶ2進数」を再編集
記事は執筆時の情報に基づいており、現在では異なる場合があります。