ビットとバイト

パソコンやスマートフォンは無論、ハードディスクやDVDレコーダなどのあらゆるデジタル機器では、データの取り扱い容量を示す時などに、バイト(Byte)という単位が使われています。

また、光回線や無線LANなどのデータ通信においてデータの転送速度を示す時には、バイトだけでなく、ビット(bit)という単位も使われます。

 

2進数とビット(bit)

そもそもコンピュータでは、0と1の組み合わせによる2進法で計算をします。なぜ2進数が使われているかというと、電気の力で動くコンピュータは、電気が流れる(オン)、流れない(オフ)で判断をする方法がもっとも適しているからです。

 

電気のオンオフの状態を数字に置き換えると、「オフの状態を0」、「オンの状態を1」とすることができ、使える数字は0と1の二つだけとなります。この0と1だけの組み合わせの最小単位をビット(bit)と呼びます。bitは、binary digit(2進数)から生まれた造語です。

 

bitを0と1を収めるマス、つまり桁数と考えると良いでしょう。1bitなら1マス(1桁)なので、0か1を収めることができ、2通りの組み合わせが構成できます。bitが2つあると、00、01、10、11の4通りの組み合わせができます。3つあると、000、001、010、011、100、101、110、111の8通りの組み合わせができます。

つまり、bitの数が増えれば、2、4、8、16、32、64、128、256といった「2のべき乗」の形で、コンピュータで扱える数を増やしていけることになります。

 

バイト(byte)

バイト(byte)は、複数のビットという意味の用語で、データ量あるいは情報量の単位で、8ビットが1バイトです。

 

【便利知識】

現在では、1バイト=8ビットで定着していますが、何ビットを1組の単位としてデータ処理を行うかは、コンピュータの歴史の中で、様々でした。

黎明期の中央処理装置(CPU)は4ビット単位でしかデータ処理ができないものがありましたし、データ処理(メモリのアドレス付け)の単位をバイトではなく、バイトに比べて長い固定長の「ワード(word)」で処理するワードマシンや、バイトに比べて短い文字(「キャラクタ(character)」)単位で可変長で処理するキャラクタマシンというものもありました。

データ処理の単位をバイトという単位で行うようになったのはIBM製のSystem/360が誕生して以降です。ただバイトは必ずしも8ビットではなく、メーカや機種によっては6ビットや7ビットのものなどもありました。

 

バイトが6ビット以上なのは、小文字と大文字の英字と数字を表すのに26+26+10=52以上の組み合わせが必要だからでした。6ビットあれば64通りの組み合わせが表現できます。扱うことのできる記号の数が増えると6ビットでは足らず7ビットを単位とするものが生まれ、やがて通信での誤り検出のためのパリティビットを加えた8ビットで処理することが標準的になったのです。

 

ISO(国際標準化機構)やIEC(国際電気標準会議)で「1バイト=8ビット」と制定されたのは2008年で、つい最近のことです。

 

【便利知識】

バイト(byte)を省略して大文字のBで表わすことが少なくありません。KB(キロバイト)、MB(メガバイト)、GB(ギガバイト)、TB(テラバイト)といった使い方がされます。

これに対してビット(bit)を省略して小文字のbで表わすこともないわけではありません。典型的な例がデータ通信での伝送速度を示す、bps(bits per second)です。

Bとbを単独で使うことは、避けた方が無難です。

 

【便利知識】

一般的にK(キロ)は1,000を意味しますが、コンピュータの世界では、2の10乗の1,024として扱われることがあり、KBが1,000バイトなのか、1,024バイトなのかがはっきりしないことがあります。そのため、コンピュータの容量や記憶装置の大きさを示す時などには、1,024バイトであることを示すためにKiB(キビバイトと読みます)という表記がされることがあります。

 

16進数

社会生活の上では、0から9までの数字で表現される、10進数が使われています。10進数が定着したのは、人間の指が左右で10本あるからだ、とも言われています。慣れているということもありますが、10進数は人間にとって理解しやすく、共通の概念として有効なものであることは言うまでもありません。

10進数では9を超えると10、99を超えると100という形で、桁上がりします。

 

コンピュータの世界では2進数が使われ、0と1の数字で表現されます。1を超えると10に、11を超えると100に桁上がりします。2進数では、2のべき乗で桁上がりしますので、どうしても桁数が大きくなり、読みにくいなど、人間にとって取り扱いが面倒になります。

 

そこで、コンピュータに関する仕様書やプログラム内では、4ビット毎にまとめて、0から9までの数字とAからFまでの英字で表現する16進数が用いられるようになりました。Aは10進数の10、Fは10進数の15に当たります。

 

1バイト=8ビットを4ビットずつ区切って16進数で表現すると、8桁の2進数が2桁の16進数で表現できます。つまり、16進数はコンピュータで複雑な処理をすることなく、すぐに2進数に変換できるのです。

16進数は、10進数よりも桁数が小さくなり、使う文字も紛らわしいものが無いので、人間とコンピュータの双方にとって扱いやすいのです。