二部構成でお届けしています今回のブログ、ビットとバイトとパケットの違いについて、ついに! ようやく!! 本題に入ります。まだ前編を読んでいないというヒトは、まずは前編の2進数のおさらいからどうぞ。
1ビットは1桁の2進数、
2ビットは2桁の2進数でしたね。
では、バイト(Byte)とは、なんなのか?というと、
『1バイトは8ビット』です。
なんでかは知りません。
ファミコン世代の僕的には「CPUの歴史が8ビットから始まった?」とかも思いましたが、4ビットの時代もあったような...、で、気になったので、この記事を書きながら調べてみました。同じ疑問を持ったヒトが『qiita』にいました!
やはり!!!
この記事を要約すると、
アルファベットの大文字、小文字、数字、プラスマイナスの記号を足すとだいたい7ビット(64パターン)ぐらい。 そこにオマケを足すと8ビットが都合が良かった。
みたいな感じですね。
さらに、もうちょっと読み進めてみると、「この1バイトが8ビットと正式に決まったのは、2008年」とのこと。意外なことに、めっちゃ最近ですね。それまでは、なんとなく暗黙の了解だったのか。。。
脱線しまくってますが、
8bitは、8桁の2進数でしたね。
2進数の「11111111」は、
128+64+32+16+8+4+2+1=255
と言いました。
はい、ここでインターネッツな皆さん、"255"って数字、よく目にしません?
そう、IPアドレスです!
192.168.0.1 とか 255.255.255.0 と設定される、アレです。
実はIPアドレスは、8bitを4つに並べてるんです!
ここの「IPアドレスって何?」というインターネット講座は、また今度にしましょう。
話は戻って、ビットとバイトです。
で、KBとかMB、GB、TBとかありますが、「KB」はキロバイトですね。
これはみんな知ってます。
1km(キロメートル)は、1,000m(メートル)ですから。
これは小学校で習います。
ただ、1KBは1,000Bじゃないんです。
これも大概のヒトは知ってます。
でも、何故、1KBは1,000Bじゃなくて、1,024Bなのかは、知らないヒトが多いようです。
理由は簡単で、ここも、コンピュータは2進数の世界だからです。
2進数の世界のK(キロ)は、1000倍ではなく、2の10乗となります。
つまり、
1024(2*2*2*2*2*2*2*2*2*2)
です。
なので、
1KBは1,024Bになります。
単純でしたね。
では、「M」(メガ)はどうでしょうか?
Mは、2の20乗になります。電卓で2を20回かけてみましょう。
1,048,576 になります。
1MB = 1024KB = 1,048,576B
です。
この流れで行くと、「G」(ギガ)はもちろん、2の30乗になりまして、
1,073,741,824 です。
「T」(テラ)は、2の40乗で、
1,099,511,627,776。
つまり...、
1TB = 1,024GB = 1,048,576MB = 1,099,511,627,776B
となります。
ちなみに、テラより大きな桁数になると、「ペタ」「エクサ」「ゼタ」「ヨタ」と続くそうです。ヨタとか、もう、「ヲタ」って書いて欲しいぐらいですが、2の80乗です。もう桁が多すぎるので、10進数の単位換算式は書きません。w
以上で、2進数とビットとバイトの関係が分かっていただけたかと思います。さらに、当社の映像・スタジオ事業部がよく行なっているライブ中継・ストリーミング配信の現場などでは"bps"という単位がよく出てきます。
これは「bit per second」の略で、1秒間に流れるビット数を表します。
800bpsだと、1秒間に800bitが流れるというわけです。
bpsとB/sと混同するヒトがよくいるのですが、B/sは「Byte per second」なので、1秒間に流れるバイト数になります。つまり、8bpsは1B/sになります(ここでは"B"psとは書かないのは何故なのかは聞かないでください)。
データファイルをコピー・転送するときには"MB/s"という表記になりますが、このようにライブ中継など映像伝送においては"bit"のお話なので、気をつけましょう。
ちなみに、コンピュータの世界は2進数だと言ってきましたが、"bps"は、ただの速度を表す単位なので、コンピュータの内部の処理には関係ないため、10進数になります。
つまり、
1Mbps = 1,000Kbps = 1,000,000bps
となりますので、要注意です。
だから「配信は1Mbpsでいいよ!」という要望があったとしても、1,024Kbpsの設定を狙っちゃダメです。ビットとバイトの違いを理解して、きちんと1,000Kbpsを狙って設定するのが正解です。
ここで、Tipsですが、
よくライブ中継のお仕事で「1時間番組の配信した映像の収録データをください。ファイルの容量、どれくらいです?」と要望を受けるのですが、例えば4Mbpsで配信していた映像ファイルの場合、
4Mbps = 0.5MB/s
となり、1時間は3600秒なので、
0.5MB/s*3600sec = 1,800MB
となります。
便宜上は「約1.8GBですよ!」とお答えしても問題はありませんが、前述の通り、厳密には1,800MBは1.8GBではないのです。
もちろんその映像データをさらにエンコードしたりすると、コーデックやエンコードソフトの設定次第でファイルの容量が変わってきますが。。。
FullHDの1時間の映像をビットレートを16Mbpsでエンコードした場合は、
16Mbps = 2MB/s
2MB/s*3600sec = 7,200MB
つまり約7.2GBになります。
とにかく、
"bpsからB/sにするときは、8で割るのを忘れないようにしましょう。"
はい、最終的に、これが言いたかっただけ。w
おっと、パケットのことを忘れてました。
ガラケーの時代から、よく耳にする「パケット」という言葉、これはインターネットの通信データを細かくした単位です。
特に移動通信端末(ガラケーやスマホなど)は複数のヒトが1つの回線を共有した状態でデータ接続しているので、やりとりするデータを細かく分割したほうが、効率良いためです。
1パケットは、128バイトです。
1バイトが8ビットであるように、1パケットが128バイトなのは、便宜上、そうなってるだけなので、丸暗記でOKです。(解説が適当になってきましたね...)
ガラケー時代の通信プランは"何パケットまでは定額いくら?"みたいな謳い文句が多かったと思います。パケットよりもバイトという言葉がメジャーになってきて、IT業界以外でも一般的に使うようになってきたので、スマホ時代の今、通信プラン名に「パケ・ホーダイ」などの名残りはありつつも"10GBプラン"のようにバイト単位のネーミングが多くなって、分かりやすくなりましたね。
ちなみに最近では月末になって通信容量が足りなくなると、「ギガが足りねぇ」というらしいです。もう単位が不明ですよ。
さーて、いかがでしたでしょうか?
インターネッツな方々に、少しでもお役に立てていれば、なによりです。
以下、余談。
ちなみに、Webセーフカラーと言われる色の指定は、16進数の6桁になります。「0」から「9」の数字と、「A」から「F」の文字を組み合わせた、16パターンです。
パソコンのディスプレイは、光の三原色の「R, G, B」の強さを2桁づつで表現していると思ってください。
というイメージで、
になります。
といった具合です。
逆に、印刷などで使われるCMYKは「C, M, Y, K」すべてが0%で白、すべてが100%で黒。
これは、白い紙に対してインクを足していくからですね。
小学生のときに経験のあるヒトも多いと思いますが、絵の具を全色混ぜると、絶対、クロになったと思います。
同じようにCMYKは印刷ベースなので、シロからスタートして色を足していくとクロになる、と。
RGBはその逆で、クロでスタートして色を足していくとシロになる、と。
ディスプレイなどデジタルの表示においては、電気が消えてたら暗闇で、電気を付けたら明るくなるから。
と、だらだら、書いてきましたが、ところどころ、間違っててもご愛嬌ということで、許してください...(弱気)。