本文へジャンプ

ビット(bit), バイト(Byte), パケット。ついでにbps。 〜前編「2進数とは?」〜

Posted by Masato Okajima

ビットバイトパケットの違い、ちゃんと理解してますか?

今の10代・20代は、デジタルネイティヴ世代とか言われてますが、ネイティヴだからこそ、デジタルが自然に生活に溶け込み過ぎて、原理原則を理解してないヒトが多いようなので、脳みその整理を含めて、ブログの記事にしてみますね。

といいつつ、デジタルネイティヴ世代じゃない30代以上のヒトも、ビットとバイトの違いをちゃんと説明できなくても、IT業界で働いてるヒトはいっぱいいるようですから、何かのお役に立てればと。
ちなみに、デジタルモンスターな当社メンバーは、全員、理解していると信じています。w

さて、本題ですが、「文系の数字嫌いのヒトにも分かりやすいように」と思って書き始めた結果、思わずして、長い記事になってしまいました。
ここら辺が、理系のダメなところ、、、涙。文章力がない。。。

ただし、順番に読んでいけば理解できるように書いたつもりなので、ゆっくり、ダラダラ読んでみてください。

ビットとバイトの違いって?

最初は、ビットとバイトの違いから。

たぶん、ビットよりバイトの方が身近な気がします。
iPhoneやスマートフォンを買うときに機種を「◯◯GB」とかで選びますからね。
そうそう、そのGBのBがバイトです。

Bがバイトで、bがビット。

一般的にビットは小文字のbで表現します。
なんで大文字と小文字で決まってるのかは知りませんが昔からそうなってます。
多分、どっかの団体とかが決めたんでしょう。(てきとー)

ビットってなんだろう?

そんなビットとバイトですが、まずビットの説明から行きましょう。

ビットは、コンピュータの世界の最小単位です。

「最小単位って、なんだよ?」
という感じですね。


僕らの生きているの人間社会は、「0」から「9」までの数字、"10進数"を使っていますが、コンピュータは「0」と「1」だけの"2進数"の世界で生きています。

その「0か1か」というのが最小単位で、1ビットです。

2進数って義務教育でみんな一度は習ってるはずなのですが、何に使うのか分からないから、けっこう理解しきってなくても「ふーん。」って淡々とカリキュラムを進めてしまったヒトも多いのでは。
だいたい、学校で教えてくれることって、何に役立つかわからないから、やる気なくなるんですよね。
「これはこういうところで使われてる」とか、「これができると、あれが分かるようになる」とか言ってくれたら、もうちょっと勉強したのかもなぁ。

いや、どっちにしてもしてないか。
そんなことより、先に進みましょう。

『デジタルは、ゼロイチ』ってどういうこと?

そういうところから、『デジタルは、ゼロイチの世界』とか言われるようになったのです。

「0」ゼロと「1」イチの羅列で会話してるのが、コンピュータくんです。

ゼロとイチだけでどんな会話できるんだ?
と感じるかもしれませんが、例えばコインを投げて「表か裏か?」という問に対して、

  • 表を「0」ゼロ、
  • 裏を「1」イチ、

と回答するような具合で、1ビットで2つのパターンが表現できるのです。つまり、1ビットで表現できるのは、

  • 0 なのか、
  • 1 なのか、

どちらかという2つのパターン。
で、それを連続させていくことで、表現できるパターンが増えていきます。

「0」ゼロと「1」イチを2つ使った2ビットになると、

  • 00 なのか、
  • 01 なのか、
  • 10 かもしれないし、
  • 11 の場合もあるよ、

という4パターンを表現できて、
今度は「0」ゼロと「1」イチを3つ使って3ビットになると、

  • 000 なのか、
  • 001 なのか、
  • 010 かもしれないし、
  • 011 の場合もあるし、
  • 100 というのもあるし、
  • 101 こんな並びにもなるし、
  • 110 っていう順番にもなるし、
  • 111 まで、

なんと8パターンが表現できる。
3つの「0」ゼロと「1」イチだけで、8パターンも表現できるんです!
これ、なにげに、すごい感じしませんか?w


ウソです。
騙されちゃダメです。
10進数は1桁で、10パターンの表現ができてますから。

ここで理系のヒトは「3つで8パターン。あぁ、階乗ね。」とか感じると思うのですが、だいたい数学嫌いなヒトは、そんな単語、思い出しもしません。(偏見)

2進数を10進数で変換するとどうなるの?

2ビットが4パターン、3ビットが8パターンということは、

  • 2ビット:2の二乗(2*2)
  • 3ビット:2の三乗(2*2*2)

ちなみにこの2進数を、10進数に変換してみましょう。

2進数の「0」は10進数でももちろん「0」ですね。
2進数の「1」も10進数でも「1」です。

!!!ここからが重要!!!

2進数は「0」か「1」しかないので、10進数の「2」を表現するには、桁数を増やすしかないのです。

下から数えて2桁目の数字が「1」イチか「0」ゼロであることをもって、「2」を表すことにしましょう。

つまり、「10」です。
この読み方は、ジュウではなく、イチゼロです。

1桁目を「1」として2桁目を「2」とすると、
10進数で「3」を表すには「11」となります。
この読み方も、ジュウイチではなく、イチイチです。
1桁目の「1」と2桁目の「2」を足してます。

2桁だけで「3」まで表現することが出来たので、次は「4」を2進数で表現するために、10進数の「4」については下から3桁目の数字を「4」としましょう。

つまり「100」となります。
しつこいようですが、これも読み方は、ヒャクではなく、イチゼロゼロです。
3桁目を「4」としているわけですから。

では、10進数の「5」は?

4*1+2*0+1*1=5
101ですね。

では、10進数の「6」は?

4*1+2*1+1*0=6
110ですね。

この流れで行きます!

10進数の「7」は?

4*1+2*1+1*1=7
111。

で、7まできたら、桁が足りなくなったので、

10進数の「8」は?

8*1+4*0+2*0+1*0=8
1000。
つまり、4桁目の数字が「8」ですね。


ここまで来ると勘のいいヒトは分かりますね。
「8」は、つまり2の三乗です。
先ほどの「いつ使うのよ、これ!?」と思っていた学生時代の"階乗"がここで役に立つわけです。


この流れで行くと、2進数の下から8桁目は、2の7乗になります。

2進数の10000000は、2の7乗。
2*2*2*2*2*2*2=128
になります。

2進数の11111111は、
128+64+32+16+8+4+2+1=255
になります。


...

あ!!!

なんか2進数の話になってしまいました。
今回、書きたかったのはビットとバイトの話でした。

今回はプロローグのみ!
本題「ビットとバイトの違い」は、後編で解説します!!

Recent Entries
MD EVENT REPORT
What's Hot?