単位の歴史(12)~ビットってなに?二進数がわからなくても大丈夫~

    ビットはデジタルデータの最小単位

    ビットとは、コンピューターの扱うデータを表すもっとも小さな単位のことで、2進法の1桁分の情報を指します。・・・と言われてもなかなかピンときませんよね。

    そもそも情報はどのようにしてケーブルを伝わっていくのでしょうか?実はコンピューターを始め、様々な電気機器が物理的に伝えることができる情報は単なる電圧の高低だけなのです。そのためすべてのデジタルデータは電圧の高低に変換されてやりとりされます。

    trim_m-s-12つまりコンピューターは文字も色もその他の情報もすべて電圧の高低の組み合わせで認識し、それでお互いにやりとりをしているのです。

    たとえばひらがなの「あ」は、電圧の高低に変換すると

    高低低低低低高低高低高低低低低低

    になります。なのでコンピューターは電圧をそのように細かく変化させて「あ」という文字を処理したり他のデバイスに伝えたりします。インターネットを流れていくときも、もちろん同じです。

    同様に、アルファベットの「T」(半角)は

    低高低高低高低低

    です。

    そしてそれを単純に数字に置き換えたものが情報処理分野での二進数になります。デジタルデータでは数字の1が電圧が高く0が低い状態を表しています。さきほどの文字を二進数に置き換えると、ひらがなの「あ」は1010010010100010になり、アルファベットの「T」は01010100となります。(この数字を文字コードと言います)

    そしてこのときの1桁分が1ビットなのです。「あ」は16桁なので情報量としては16ビット、「T」は8桁なので8ビットだということがわかります。

    二進数と聞くと難しく思うかもしれませんが、「数(意味のある値)」だと思うから混乱するわけで、単に「|」と「〇」の記号の組み合わせと思えば理解しやすいと思います。あるいは並べたマッチ棒の上下で内容を表していると考えればわかりやすいかもしれません。

    しかしそれを世界じゅうの機器で共通に実現させるためには、どの文字にどの組合せの二進数を割り当てるのかを世界中で取り決めなくてはいけませんし、日本語のようにアルファベット以外の文字を使う国は自国の言語に対してもその必要があります。今に至るまでには多くの時間と議論を要したことは十分想像できますよね。
    余談ですが、日本語の場合は歴史的な経緯でこの取り決め(文字コードの変換ルール)が複数存在するため、それが文字化けの原因となっています。

    コンピューターで処理される情報は文字ばかりではありません。文字をディスプレイに表示させるだけでも、書体、大きさ、色、スタイルなど様々な情報が付随しますが、ほかにも音声、画像、そしてそれらを制御する有形無形の情報やデバイスの状態や設定など、すべてのデータがこの方式で記憶されやりとりされています。

    バイトはビットを8桁まとめたもの

    ところで、情報処理の分野ではビットによく似た言葉でバイトという単位もあります。

    バイトはビットを8桁ずつまとめた単位です。これはコンピューターが1と0の羅列をどこで区切って処理するのか?の指標です。

    たとえば「あいうえお」という5文字の文字列は、二進数に直すと

    「10000010101000001000001010100010100000101010010010000010101001101000001010101000」(※SJISという文字コードの場合)

    で、80ビット(80桁)の情報ですが、何ビットで区切るのか?という世界共通のルールがないと、どこからどこまでが1文字を表しているのか全くわかりません。
    たとえばもし今の世の中が突然「全角文字は20ビットで一文字」というルールに変わってしまったら、先ほどの二進数は日本語4文字分ということになってしまいますよね。そしてもちろん「あいうえお」は認識されません。

    つまり情報処理の分野では、何ビットをひとかたまりとしてとらえるのか?という区切りのルールはとても重要なのです。そのため現在では8ビット(8桁)をひとかたまりのデータと定めた世界共通のルールで情報がやりとりされています。

    ここでなぜ「8」なのか?という問いに対しては「2の乗数で何かと処理上の都合がよかったから?」というのが理由になりますが、古い過去には4ビットや6ビットで1バイトとするマシンもありました。

    しかし仮に4ビットを1バイトにした場合、1バイトで表現できるビット列の組合わせはわずか16種類しかなく、たとえ文字種の少ないアルファベットであっても「1バイト=1文字」にすることはできません。一方、8ビットを1バイトとした場合は、256種類の組み合わせが可能になり、1バイトで表現できる内容にもぐっとバリエーションが付けられますし、アルファベットならばすべて1バイト(8ビットの組み合わせ)で収まります。

    そのため8ビットを1バイト(ひとかたまり)で処理するコンピューターがどんどん増えて行き、ついに2008年にはISO(国際標準化機構)やIEC(国際電気標準会議)で「1バイトは8bitとしましょう」とする意見が採択されたのです。

    ちなみに常用漢字だけでも2136字ある日本語の場合は、1バイト(8ビット=8桁。256種類のデータが表現可能)ではとてもすべての文字を表現しきれませんから、2バイト(16ビット=二進数の16桁。65536種類のデータが表現可能)で一文字を表示させる仕組みになっています。日本語が「2バイト文字」と言われるのは、2バイト(16ビット)を使わないと、すべての文字を表現できないからなのです。決して半角英数字と比べて幅が2倍だからではないのです^^

    文字だけに限らず、コンピューターは延々と連続するビットの列を常に区切って処理していますが、「32ビットパソコン」とか「64ビットパソコン」というのは、そのコンピューター(正確にはCPU)が様々なデータを何ビットずつ区切って処理しているかを表しています。

    バイトという単位の提唱者はIBMのワーナー・ブッフホルツ

    ビットという単位の由来を調べると、どのサイトにも binary digit(binary=二進数、digit=1桁)から生まれた造語、と書いてあります。

    ですが、bitは英語で「噛むこと」や「刃物」という元々の意味から派生した「小片、細片」という意味があったため、情報処理の分野では誰と言うことなく、自然発生的に使われ始めたと思われます。(もちろん世界で初めて使った人はどこかにいるのでしょうが…)

    Werner Buchholz

    一方、バイトという単位のほうは発案者が明らかで、それを提唱したのはIBMで働いていたドイツ系アメリカ人のワーナー・ブッフホルツというコンピューター学者です。

    フロッピーディスクなどの磁器系記録媒体が登場する前は、鑽孔紙テープや紙に穴をあけて作成するパンチカードと言われるカードにデジタルデータが記録されました。ブッフホルツは鳩がパンくず(bit of bread)を何度もつつく(bite)様子を見てパンチカードの穿孔機が、カードに孔をあける様子と似ていると思ったようです。

    そして鳩が5~6回パンくずをつついて飲み込む様子が、データを複数bitずつまとめて読み込んで処理する「カード読み取り機」の仕組みと似ていたため、 bite(つつく)という言葉をマシンがデータを機械的に処理する1単位としました。この考え方は技術者にすんなり受け入れられて、瞬く間に普及したそうです。

    しかしbitとbiteは綴りが非常に似ています。ブッフホルツは間違いを避けるためにあえて綴りを変えて「byte」としたようです。これは、電話会社なのにphoneという言葉を使っていない英国vodafone社や、カブトムシなのにBeetlesとは書かないBeatlesのように、少しだけウィットのある造語的なセンスを出したかったのかもしれませんね。