1と0の世界で

前回は情報をディジタルで扱うことのメリットについてお話ししました。ディジタル化するということは、データを数値に置き換えて、間違いが少なく計算にも便利にするということでしたね。コンピュータなどで扱うディジタル情報は、電気のONとOFFで表現できる2進法になっているということにも触れていたのは覚えていらっしゃるでしょうか。

2進法というのは、学校で簡単に習ったことがあるかもしれません。10進法なら0〜9までの10通りの文字(数字)を組み合わせて量を表示するわけですが、2進法はこれを0と1の2つの文字のみで表現する方法です。

2つの文字しか使えないのですから、同じ値を表現するにも当然10進法と比べて桁数が大きくなってしまいます。たとえば、10進法で1996と4桁で表される量は2進法では11111001100と11桁が必要です。これだけ大きな桁数でしかも1と0が交互に並んでいるだけの数字は、人間の目では読み間違いをしやすく(11111001100と11110011100の違いなんて一目見ただけでは分かりません)、とても扱いにくいものですね。しかし、コンピュータにとっては電気のON/OFFさえ判断すれば良いために、非常に都合の良いデータの表現法なのです。

(0/1 and ON/OFF) 全てが1と0で表現されるということをもう少し考えてみましょう。機械の内部ではこれは電流のONとOFFになるわけですが、ここには人間の言葉のような漢字やひらがなの区別もなければ分かち書きもありません。1と0がずっと芋蔓のように連続しているだけです。何らかの方法で単語としてのまとまりを与えないことには、延々と続く1と0は単なるYesとNo(つまり2通りのことしか表現できない情報)の連鎖か、訳の分からない暗号になってしまいますね。

これを意味ある情報とするために、コンピュータでは1と0の羅列を通常ある決まった桁数ごとに区切って単語として扱います。「ビット」という言葉がこの雑誌にもあちらこちらに使われていると思いますが、これはbinary digit、すなわち2進数の桁数を意味する略語です。このビットが、1と0を単語として扱うまとまりの大きさを表現する単位になります。32ビットというのは、32桁の2進数を使って一つの単語を表現するということになるわけです。

それでは、1と0の組み合わしかない2進数で、一体どれくらいの情報が表現できるでしょうか? 2進数1桁の場合は、0か1ですから明らかに2通りの情報しか表せません。2桁になると、1の位で2通り、2の位で2通り、両方で2x2=4通りが表現できます。同様に、3桁なら2x2x2=8通り、4桁なら2x2x2x2=16通り...つまり、n桁なら2をn回だけ掛け合わせた(これは2のn乗にほかなりません)情報量が表現できることになります。

32ビットではどれくらいになると思いますか? これは2の32乗ですから4,294,967,296、約43億通りの情報表現が可能なのですね。1と0だけでも結構馬鹿になりません。これだけあれば随分複雑なことも伝達できそうです。

もともと現在のコンピュータはアメリカで生まれたものですから、アルファベット大小52文字と数字といくつかの記号が表現できれば基本的にはOKです。そこで、これらの情報を表現する単語の枠組みとして、8ビットが標準として広く使われるようになりました。2の8乗すなわち256通りの表現ができますから、欧米文化なら十分ですね。この8ビットの単語をバイト(byte)と呼びます。1バイトはつまり英数字1文字分の情報量になるわけです。メモリの記憶容量やハードディスクのサイズなど、コンピュータの扱う情報の大きさを表すのにこのバイトが使われているのは良くご存知の通り。

ついでながらメガというのは百万のことですから、1メガバイトとは百万バイトのこと(*注)。1.44メガバイトのフロッピー1枚には英数字なら150万文字も記録できてしまうのです。ビットでいえばさらにその8倍ですから、1000万をゆうに越える1と0があの中に詰まっている!

ちょっと待て、1バイトで英数字が扱えることは分かったが、日本語はどうしてくれる? 漢字なんて何万種類もあるのだぞ・・・おっしゃるとおり、日本語は1バイトでは表現できません。そこでどうしたか。この話はこの次に、「コンピュータで文字を扱う」というテーマで考えてみることにしたいと思います。

(*注)2の累乗として表現する方がいろいろと都合がよいので、コンピュータの場合、正確にはメガは2の20乗=1,048,576となります。

(Beginners' Mac 1996/5号)