にしんが大漁2

にしんがたくさんとれたら、やっぱり肥料になってしまうのでしょうか?
京都のにしんそばは結構好きだった、身欠きニシンが好き・・・
にしんの話はおいといて、二進数の続きということで おさらいです。
二進数は、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程度であるということです。
どうでしょう?
わかりにくい所などあれば、どうぞご遠慮なく

カテゴリー: すうがく パーマリンク

にしんが大漁2 への4件のフィードバック

  1. ぽち のコメント:

    わたしは計算と数字に非常に弱いので算数の成績はすごく悪かったんですけど、
    Markさんの説明は国語的な説明なのですごくわかりやすいです。
    webやってると、16進数うんぬんを理解する前にカラーコードで覚えてしまうので、なんだか身近でした。
    > 二進数で3桁分がそのまま八進数の一桁になる
    ここがわかりませんでした。
    感覚ではわかるんですけど、理論立てて説明が付かないです。
    どうしてなんでしょう。
    アクエリアスさんはSafariということは、OSXですね。
    わたしはOS9です。
    OS9では、投稿フォームのコメント欄が文字化けます。
    フォントが合っていないだけなので、そのまま気にせず投稿してます。
    (けっこういろんなサイトで同じ状態になっていて慣れているので)
    フォームのどこかに
    lang=”ja”
    を追加すると直ると聞いたんですけど、どこに追加するのかはわかりません。
    使用ブラウザはMacのIE5.1です。

  2. mark のコメント:

    ポチ君から
    「二進数3桁が八進数1桁に一致する」
    というところがわかりにくいという意見を頂きました。
    二進数を0から64まで並べてみるとわかりやすいのでしょうが
    ちょっと量が多いので、その辺は自分でやってもらうとしてもう少し説明の方を追加したいと思います。
    二進数3桁で表せる数は、書いたとおり、0から7の8種類です。
    八進数1桁で表せる数は、0から7の8種類
    つまり表せる範囲は全く同じということはわかると思います。
    それを2進数では、000,001,010,011,100,101,110,111と表して
    八進数では、0,1,2,3,4,5,6,7と表すというのは問題ないと思います。
    これだけだと十進数との区別がつきませんが2桁の八進数を考えてみると
    八進数で65というのは、十進数では53となります。
    これを二進数で表すと110101となるわけです。
    この二進数を3桁づつ切ると、110と101となりますね。
    したがって、二進数を3桁づつ切ってそれをそれぞれ八進数に変換してみると
    右から1桁目から3桁目の101が5
    4桁目から6桁目までの110が6
    それを順番に並べると65となって、八進数に一致する訳です。
    十進数の時はこんな風な簡単な変換はできませんでした。
    十進数で53を二進数に変換するためには、・・・
    邪魔くさいので計算方法は省きますが、上の八進数にくらべてやっかいであろうことは簡単に想像できると思います。
    こんな説明でどうでしょうか。

  3. mark のコメント:

    計算と数字に非常に弱いというのは私も同じです。
    計算は未だに弱くて、3桁の足し算は暗算では、苦労します。
    2桁が精一杯かな?それでも悩むことが有ります。
    また数字についても、「0,1,2,たくさん」の人なので3以上の数字はあまり考えません。
    そのため数学を専攻したというくらいです。
    もしもっと計算が得意だったらきっとコンピュータや数学をやらずに、工学系や物理系に進んでいたことでしょう。
    世間ではちょっと誤解されている方がおられると思いますが、数学を専攻していると、数字や計算とは無縁でいられます。
    また、コンピュータの世界も同様に計算など全然やる必要が有りません、計算なんかコンピュータにやらせればいいんです。
    計算が得意な数学者というのも存在しますが、それは計算が得意だから数学者になったのではなく、数学者になったけどたまたま計算が得意というただそれだけのことです。
    多分大学の課程で計算を最もしなくていいのは数学科でしょう。
    ちなみに高校時代最も得意だった科目は、国語、それも古典と漢文です。
    大学も、理系で二次試験(当時は共通一次と二次試験という言い方をしました)に国語があったおかげで合格したと思っています。
    じゃぁ、なんで、文学部とか法学部に行かなかったかって?
    そりゃ、周りの受験生がみんな国語が得意だからです。
    そんな得意な人たちと競うなんて効率の悪いことしたくないじゃないですか。
    周りが苦手な所で勝負すれば勝つ確率が高いでしょう。
    「なぜ我が艦隊が無敗と呼ばれているか知っているか?それは負ける戦いはしないからだよ。」(銀河英雄伝説より)

  4. ぽち のコメント:

    アッテンボローかポプランかな。あ、思い出せない。悔しい。
    久々に読みなおそう。
    算数の成績は悪かったけど、数学の成績はさほど悪くなかったんです。ホントです、信じてください。
    数学になると証明とかが多くなって来るじゃないですか。そういうのは出来るんですけど、単純にテストでは計算間違いとプラスマイナスのつけ忘れ(これが一番多かったです)で、ものっすごく点が悪かったです。笑えるほどに(悲)
    ただたんにわたしがうっかりもので大雑把なのが原因ですね;
    今も改善されていません。うわーん!
    数学を専攻したら何を研究するんですか?
    縁遠い世界なので、数字と計算以外の何を研究してるのか皆目見当がつきません。
    というか、そもそも数学者ってどんな職業なのかすらわかりません。
    学者と言えば、モンスターの種類や能力値を教えてくれるけど冒険中には大して役に立ってくれない無駄職業という認識しかないです。(世の中の学者さんごめんなさい)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です