矢沢久雄

 今回の連載では「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進数を理解する切り口となります。

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

宇宙人: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乗の位」であることも分かりますね。「分からない」という人は,図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進数と同様に,いくらでも数が数えられます。皆さんも図3を見ながら,「ぜろ」,「いち」,「いち・ぜろ」,…と声を出して2進数で数を数えてみてください。10進数に比べて桁が多くなることにも注目してください。

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

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

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

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

図3●2進数で数えてみましょう
 答えは,NOです。ICは,1本のピンで0Vと5Vの2種類の電気しか取り扱えないようになっています(そういう仕組みになっているのです)。この0Vが数字の0,5Vが数字の1を表していると考えれば,ICの1本のピンで2進数の1桁を表すことができます。つまり,ICは,複数のピンをセットで使って(32ビット・コンピュータなら32本),あらゆる情報を複数桁の2進数で表しているのです。皆さんが,キーボードから10進数で数値を入力したとしても,コンピュータの内部にあるICは,その数値を2進数で表して処理しているのです。図3[拡大表示]を見て納得してください。

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

●ビットとバイト

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

 コンピュータにおいて,ビットは情報の最小単位であり,バイトは情報の基本単位です。ビット(bit)とは「破片」という意味です。バイト(byte)とはbite(噛む)という言葉から作られた造語です。情報の破片がビットで,情報のひと噛み(ひとまとまり)がバイトというわけです。コンピュータは,バイト単位でデータを受け渡しすることがよくあります。

 コンピュータの能力を,一度に処理できる情報量で表すことがあります。例えば,Pentiumを搭載したパソコンの処理能力は,32ビットです。Pentiumは,32けたの2進数を一度に処理できるのです。ゲーム機である「NINTENDO 64」の64は64ビット,すなわち64けたの2進数を一度に処理できることを意味しています。

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


【今後の予定】
第2回 2進数と10進数の変換
第3回 2進数でマイナスの数を表す方法
第4回 2進数で小数点数を表す方法
第5回 2進数と相性のよい16進数