矢沢久雄
今回の連載では「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進数を知らない宇宙人に質問されたら… |
宇宙人: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進数を表す |
電気の単位がV(ボルト)で表されることもご存知ですね。例えば,皆さんの家庭には100Vの電気が来ています。それでは,ICを使って10進数の0~9という情報を表すには,どうしたらよいと思いますか。ICの1本のピンを10進数の1けたとして,0V~9Vの電気で0~9を表すと思いますか?
![]() |
図3●2進数で数えてみましょう |
なお,2進数で数値を表すときに,0101のように,上位けたが0であっても0を明示することがあります。例えば,0101を単に101とは書かない場合があります。これは,その2進数を表すのに,ICのピンを何本使っているかを明示するためだと考えてください。もしも8本のピンで1を表すなら,00000001という8けたの2進数にします。
●ビットとバイト
![]() |
図4●ビットとバイト |
コンピュータにおいて,ビットは情報の最小単位であり,バイトは情報の基本単位です。ビット(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進数