ビットと2進法

さて,2人はコンピュータ同士が,どのように通信しているかわかりますか?

知らないなぁ。

コンピュータが英語や日本語でコミュニケーションしてるわけないし,どうやって通信しているんだろう?

私たちはスマートフォンやパソコンを使って,日々通信をしています。さて,2人はその通信がどのように行われているか,考えたことはありますか? コンピュータは,音や画像などをデジタル信号に変換して通信をしています。

デジタル信号?

デジタル信号とは,低い電圧と高い電圧で表す信号です。 下図のように,アナログ信号は連続するデータを連続して記録していますが,デジタル信号は連続するデータを一定の区間で区切って記録しています。 たとえば下図のように,アナログ信号は連続してデータを記録しているので,波形に表すと1本の滑らかな線で繋がる信号です。それに対してデジタル信号は,連続するデータを一定の間隔で区切ってデータ化しているので,階段状の形になります。 コンピュータはすべてのデータをデジタル信号として扱うため,データは電圧の低(0)と高(1)だけで表現します。

リンク

なるほど〜。

さて,電圧が低い(0で表す)か,電圧が高い(1で表す)かの2通りで表します。この0や1を最小単位として『ビット』といいます。 2人は「ビット」という言葉を聞いたことがありますか?

ビット?

聞いたことないなぁ・・・。

そうですね。皆さんはバイトという単位の方になじみがあるかもしれませんね。

バイトは聞いたことがあります!

スマホの通信料などで,「5ギガバイト」というように使われていますね。

「10」であれば「2ビット」,「1101」であれば4ビットとなります。 「1バイト」は「8ビット」に相当します。 たとえば「1111000011001100(ビット)」は「16ビット」で「2バイト」になります。 さて,このビットですが,「0」と「1」のみでデータを表すため,普段使っている数の数え方「10進法」ではなく「2進法」を用いて表されます。

2進法って難しそうだな・・・。

それでは詳しく説明します! 2進法とは,「0」と「1」の数字を使って数を表現する方法です。 10進法は「0」「1」「2」「3」・・・「9」の数字を使って数を表現していますね。 10進法で表される数字は以下のように2進法と対応しています。

リンク

実は2進法,10進法以外にも,16進法などもあります。 16進法は次の2-2で学習します。

そうなのか〜。

10進法から2進法への変換

10進法でも,2進法でも考え方は同じなので,一緒に2進法を学んでいきましょう! 10進法では,0〜9の10個の数字を使って数を表しますよね?

そうですね。

0から9までの10個の数字を使って表したあと,1桁上がって10になります。

そうです! 「10」という11個目の数を表現するときには,対応する数字がなくなってしまうので桁がくり上がって,10と2桁で表現しているのです。

あえて言葉にすると,わかりにくいですね。

では,お金にたとえて考えてみましょう。 今回は10進数なので,5円玉・50円玉・500円玉・5000円札は考えず,1円玉・10円玉・100円玉・1000円札・10000円札で考えますね。

はーい!

2,243円でいうと,お札・小銭の枚数はそれぞれ何枚になりますか?

1000円札が2枚,100円玉が2枚,10円玉4枚,1円玉が3枚,ですね。

こんな感じのイメージですね。

リンク

はい!そうですね。

では,たとえば,ここで10円玉が14枚になったとしたらどうでしょうか?

リンク

10円玉の10枚分は100円玉に置き換えられますよね?こうなります!

リンク

その通り!! 数字で表すと,2,343円になり,百の位が一つ増えましたね!

はい,いつもやっている考え方です!

1000円札,100円玉,10円玉,1円玉はこんなふうに置き換えることができます。

リンク

全部10の累乗に変換できるんですね!

そっか,1は10の0乗か!

10進法は各位が,一の位・十の位・百の位・千の位で表示されているのは,小学校で習いましたね?それをもとに,さっきの2,343円はこのように表示されます。

リンク

右から順に,0乗から並べていくんですね!

右から順に,10の0乗の位,10の1乗の位,10の2乗の位・・・って感じですね!!

2進法もこの方法が応用できるんですか?

はい,そうです!

10進法の考え方と同じということは,2の累乗で考えていくということですか?

その通りです! 2の0乗,1乗,2乗・・・という感じで右から考えていきます。 「1101」で考えてみましょう

2の3乗,2の2乗,2の1乗,2の0乗で考えるのかな?

正解です!こんな感じです!

リンク

そっか,10進法のときは10の累乗の前に0~9が入ってたけど,2進法は0・1の2種類の数字だから,2の累乗の前に0か1が入るんだね!

なるほど!

これを計算すると,どうなりますか?

2の3乗と2の2乗と2の0乗を足せばいいんですか?

そうです!その調子!

8+4+0+1になって,答えは13ですね!!

正解!!2進法の1101は10進法で13のことです。

2進法から10進法への変換は,コツがわかれば簡単ですね!

この変換の方法がわかれば,3進法や4進法,8進法などでも同じようにできるようになります!

そっか,10進法は10の累乗,2進法が2の累乗で考えられるから,3進法は3の累乗,4進法は4の累乗,8進法は8の累乗で考えられる,ってことですか?

はい!その通りです! 急に,知らないn進法の問題が出てきても,慌てず,今回の考え方でチャレンジしてみましょう!

はーい!

ちなみに2進数を10進数に変換する式は,数学的にはこのように表します!

リンク

おお,なんかややこしい・・・。

「2」の部分を変えれば,ほかの進法の数も変換できるんですよね?

そうです!わからなければ,先ほどのお金の考え方で乗り切れば大丈夫ですよ!

身の回りにある情報の単位

ここからは,コンピュータなどで扱われる単位の考え方を学んでいきましょう。 みなさんはSDカードって知ってますか?

ゲーム機の容量を増やしたりするメモリカードのことですか?

カメラとかにも入れたりするよね?

はい,こんな小型のメモリカードです。 いろんなサイズ,容量があります。

リンク

知ってます!

なんか,100ギガとか,キリのいい数字の容量のものってないですよね?

たしかに!64GBとか,256MBとか・・・。

よく気がつきましたね!これは先ほど学んだ,2進法が大きく関係しています!

2進法がですか?

はい!コンピュータはデータを0・1で表現する2進法で処理したり,データを記録したりします。 そうすると,先ほどもやりましたが,2進法にとっては,2の累乗の値が切りのいい数字になります。

ふむふむ・・・。

たとえば,64という数字は2の6乗ですし,256は2の8乗です。

そっか,人にとっては100とか10の累乗がキリがよくみえるけど,コンピュータにとっては,2の累乗が都合がいいんですね!

そうなんです!2進法を理解することで,身の回りにある数字の意味も納得できるようになりますね。

はい!よくわかりました!

情報量と単位

では,次は単位の大きさについてです。 メガバイト,ギガバイト,どっちが大きいでしょうか?

え,どっちだっけ・・・。

えーっと・・・いつもわからなくなっちゃう・・・。

メガ・ギガ・テラ・・・と大きくなっていきます。それらを使って,ビット・バイトの関係を表にまとめてみました。

リンク

え,1000バイト=1キロバイトじゃないの?

コンピュータは2の累乗で情報を考えるんでしたよね。 ビットやバイトを考えるときは,2の10乗である1024で単位が変わっていくんですよ!

お!ここでも2の累乗!!なるほど!

ただ,ときどき問題によっては,「1キロバイトを1000バイトとします。」としているものもあるので,単位変換するときは,条件をよく読むようにしましょう。

はーい!

では,この講義のまとめの練習問題に取り組んでみましょう。

assignment確認問題

32ビットは何バイトですか?次のなかから一つ選んでください。

  • label_outline2バイト
    not_interested 不正解!

  • label_outline4バイト
    thumb_up 正解!

    1バイトは8ビットなので,32ビット ÷ 8ビット = 4バイト

  • label_outline128バイト
    not_interested 不正解!

  • label_outline256バイト
    not_interested 不正解!

assignment確認問題

1ビットでは0と1の2通りの状態を表すことができます。8ビットでは何通りの状態を表せますか?次のなかから一つ選んでください。

  • label_outline8通り
    not_interested 不正解!

  • label_outline16通り
    not_interested 不正解!

  • label_outline128通り
    not_interested 不正解!

  • label_outline256通り
    thumb_up 正解!

    1ビットでは2通りなので,8ビットでは,2×2×2×2×2×2×2×2通り = 28= 256通り

assignment練習問題

2進法で表された1000110は,10進法ではどのように表せますか?次のなかから一つ選んでください。

assignment練習問題

2進法で表された110101は,10進法ではどのように表せますか?次のなかから一つ選んでください。