にしんがたくさんとれたら、やっぱり肥料になってしまうのでしょうか?
京都のにしんそばは結構好きだった、身欠きニシンが好き・・・
にしんの話はおいといて、二進数の続きということで おさらいです。
二進数は、0と1の二つの記号(実質1という記号だけ)を使って、その1がどの場所にあるかによって数を記号化した物です。
同じ説明を十進法で行うと
十進数は、0と1と・・・9の十個の記号(実質1から9の9個)を使ってその、1から9がどの場所にあるかによって数を記号化した物です。
となります。
この中で、「どの場所にあるかによって」というのが位取り記数法という、アラビア数字を使ったインド発祥の画期的な記数法なのです。
位取り記数法が導入される前は欧米、日本のどこを見ても、数を表すには、桁を表す単語を使っていました。
つまり、数字に千とか万とか億とか兆という位を表す言葉を付けて表していたわけです。読むときは今でもそうしますね。
つまりたとえば、58,231 を、五万八千二百三十一(ごまんはっせんにひゃくさんじゅういち)と書いていたわけです。
この記数法のメリットは、0の桁を省くことができることです。
つまり、50031であれば、五万三十一と書けばいいわけです。
しかし、桁がふえて、50桁くらいになってしまったらどうします?
50桁あたりの桁を表す言葉をご存じでしょうか?
ちなみに日本語では、88桁目くらいまでは言葉が用意されています。(諸説あって、132桁目だとという説もあります)
まぁ、それはどうでもいいんですが、どちらにしても200桁くらいになると表記の方法がありませんね。
しかし、位取り記数法であれば、とりあえず、数を並べればいいだけなので、200桁だろうが、1000桁だろうが自由に表現できます。
また、計算の際、筆算を行うことを考えると、位取り記数法の法が楽だというのはおわかりでしょう。
合わせて日本では、そろばんという位取り記数法をそのまま体現した計算器が有りますので、位取り記数法自体に抵抗がある方はあまりおられないでしょう。
現代に生きていて位取り記数法はよくわからんとかいう人がいたら会ってみたいものです。
つまり、二進数というのは、十進数の十を二に代えただけのものということがわかって頂けたでしょうか?
ところで、一進法というのは存在するでしょうか?
そう、記号を一つだけ用いたつまり0だけを用いた記数法となります。
たとえば、3を表すには、000、5を表すには、00000
そうそう、うちの小学生がよくやっています。指折り数える記数法ですね。
では、三進法というのは可能でしょうか?
つまり、記号を3つだけ用いた、つまり、0,1,2を用いた記数法ですね。
4を表すのは11、8を表すのは、22という感じで表現されることになります。
さて、ここで特殊な例として八進数を説明したいと思います。
これまでの例の通り八進数ですから、0と1から7の8つの記号を用いた記数法となります。
10を表すのが、12 20を表すのが24
ややこしいだけで何のメリットがあるのかよくわかりませんね、
しかし二進数と比べると
2を表すのは 二進数で 10 八進数で 2
7を表すのは 二進数で 111 八進数で 7
10を表すのは 二進数で 1010 八進数で12
20を表すのは 二進数で 10100 八進数で24
31を表すのは 二進数で 11111 八進数で37
32を表すのは 二進数で100000 八進数で40
他の例も考えてみて下さい。
二進数と八進数をよく見ると、二進数で3桁分がそのまま八進数の一桁になることがおわかりいただけますか?
そうです、とても二進数とは相性がいいんです。
十進数と二進数を相互に変換するのは邪魔くさかったのですが
二進数と八進数はとても簡単に変換できるのです。
では、二進数を4桁づつ切ったら、どうなるでしょう。
4桁の二進数で表せる数は、0から15の16種類となります。
では、十六進数というのがあれば、二進数から簡単に変換できるのではないでしょうか。
十六進数とは、0と1から?までの16個の記号を使って表現する記数法となりそうです。
しかし、10以上の数を表す数字は存在しません、どうしましょう。
それではアルファベットのはじめから6文字をもってきてこれに代用するようにしたらどうでしょうか。
つまり、0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fを数と見るのです。
Aが10、Bが11・・何かで見たこと有りません?
そうですトランプのJQKの様に、アルファベットを数と見立てるのです。
では、十六進数で表現するとどういう事になるのでしょうか。
十進数 二進数 十六進数
15 1111 F
20 10100 14
31 11111 1F
50 110010 32
となります。
そして、二進数との対応を考えると予定通り4桁づつ切った物がそのまま十六進数の一桁となります。
つまり二進数4桁が十六進数1桁になるのです。
二進数の難点として、桁数が増えすぎるということがありましたが、これなら簡単です。
二進数の桁数の約4分の1で済んでしまいます。
十六進数というのは、二進数を表現するのに桁数を減らして表現しやすくした物として使えそうです。
とりあえず進数の話はここでおいておいて、次にビットとかバイトという言葉の話に入りたいと思います。
ビットとは何か?という前に、数を表すのに必要な桁数という事を考えてみたいと思います。
たとえばそろばんを思い出してみて下さい。
そろばんの桁を10桁使用して表現できる数はいくつあるでしょうか。
簡単ですね、0から999999999までの1000000000(十億)個の数が表現できます。
同じ事は伝票の数値記入欄の桁数などでも言えます。
5桁の欄しかなければ、0から99999までの数しか表現できませんね。
つまり、桁数というのはその範囲で表現できる数の種類を決めてしまうのです。
では、二進数だとどうなるでしょう。
前に例として出した点字の場合、点は6個でした。つまり6桁ですね。
これで表現できる数は、000000から111111の64種類となります。
つまり1桁目で2種類、2桁目で2種類・・・6桁目で2種類、全部で、2×2×2×2×2×2=64種類の表現ができるのです。
では、点が8個あったらいくつまで表現できるでしょうか。
そう、256種類の数が表現できます。(2×2×2×2×2×2×2×2=256)
この二進数の桁数の事を、ビット(bit)と呼びます。
つまり、二進数では、単に桁という言葉をビット(bit)と置き換えてもらって構いません。
3桁目を3ビット(bit)目、全部で6桁なら、6ビット(bit)
1ビット(bit)で表現できる数は0か1の2種類
2ビット(bit)で表現できる数は、0から3までの4種類
・・・・・・・・
8ビット(bit)で表現できる数は、0から255までの256種類
となるわけです。
十六進数の所で説明したとおり、16進数は、二進数4桁(ビット)を1桁で表現できますから
十六進数では、二進数8桁(ビット)を2桁で表現できるという事になります。
そして、十六進数2桁分、二進数8桁(ビット)分をひとまとめにして、バイト(Byte)という言葉で表します。
バイトというのはそのまま、二進数8桁と置き換えてもらって結構です。
つまり、8ビット=1バイトで表現できる数は、0から255までの256種類
となるわけです。
これがビット、バイトの関係です。単純でしょ?12個で1ダースというのと同じような物です。
そして、あまり一般には使われませんが、コンピュータ業界では
2バイトのことを1ワードと呼んだり、4ビット(二分の一バイト)の事をニブルと呼んだり、1バイトのことを1キャラクタと呼んだりします。
いちいち4ビットと書くのが邪魔くさいのでニブルと言っているだけです。
では、世の中でよく使われる、bpsというのは何か?という説明をします。
まずbpsというのは、bit per secondの略です。
perというのは、/という記号を表しますから、bpsというのはbit/secondつまり1秒間に何ビットかという事を表しているわけです。
これにMとかKとかの記号が付いてきますね。
Mはメガ Kはキロと呼んで、1K=1024 1M=1024Kの事を表します。
普通k(キロ)というのは、1000を表しますよね。
コンピュータ業界以外では、Mも100万を表します(メガヘルツとか聞いたことあるでしょう)
ではなぜ、1000ではなく1024なのかというのは、
1024がちょうど10ビット分で表せる数、つまり、2の10乗に当たるので
2の何乗というのが大好きなコンピュータ業界では、1000に近いので、これをKとして表現するようになったのです。
その方が計算しやすいからというのもあります。
なぜ計算しやすいのかという話はちょっとややこしいのでちょっとはぶきます。
さて、100Mbpsというのはどのくらいかというと
まず、M(メガ)を1024×1024と計算して、1048576
これの100倍ですから、104,857,600bpsということになります。
さて、日本語の文字を1文字表すのには、2バイト必要ですから、1文字分で16ビット(1バイト=8ビット)必要になります。
ということで、104,857,600bpsを16で割ると6,553,600 バイト/秒となります。
つまり、1秒間に655万文字の情報を送れることになります。
これがどのくらいの量かというと、よく新聞で表現されますが、一般に新聞1ページには約5000文字が入っているそうなのでこれで割ると、1310ページとなります。(広告や写真の部分を除く)
つまり最大限の速度でおくれば、1秒間に新聞1300ページ分以上の情報が送れるわけです。
1日の新聞は平均して、32ページとして、約40日分の新聞になります。
つまり、100Mbpsの回線速度で最大限の速度で送ったとすると、40日分の新聞記事が1秒で受信できることになります。
これが100Mbpsという数字の意味です。
さて、では、最近はやりの通信単位、パケットですが
このパケットというのはPacketと書いて128バイトの事を指しています。
なぜ、128バイトという変な量なのか、実は、これをビットで表すと、ちょうど1024ビット
つまり、1Kbitとなるわけです。
ですから、たとえば、144Kbpsでだと、1秒間に144パケット送れるということです。
どうでしょう。
ビットとは、二進数の桁数のこと、バイトとは、単に8ビットのこと
1メガビットは1024キロビットで、1キロビットは1024ビットのこと
1パケットは128バイトで、つまり、1キロビットのこと
注
歴史的には、1キャラクタが7ビットだったり、今でも文脈によってはワードが4バイトを指していたりとかする場合が有りますが
一般的に、何もことわらずに使う場合は、上記の単位で解釈してかまいません。
今回の説明ではすべてをデータの通信だけに使った場合の計算を書いていますが、実際にはプロトコルというものがあって、データ以外にも通信しなければならない情報が有りますので、本当は、1割くらい余分なデータがついてくると思って頂く必要が有ります。
つまり、100Mbpsといっても、実際に有効に使えるのは90Mbps程度であるということです。
どうでしょう?
わかりにくい所などあれば、どうぞご遠慮なく