ビットと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進法ではどのように表せますか?次のなかから一つ選んでください。
-
label_outline18
not_interested 不正解!
-
label_outline24
not_interested 不正解!
-
label_outline70
thumb_up 正解!
1000110 = 1 x 26 + 0 x 25 + 0 x 24 + 0 x 23 + 1 x 22 + 1 x 21 + 0 x 20
-
label_outline140
not_interested 不正解!
assignment練習問題
2進法で表された110101は,10進法ではどのように表せますか?次のなかから一つ選んでください。
-
label_outline15
not_interested 不正解!
-
label_outline44
not_interested 不正解!
-
label_outline53
thumb_up 正解!
110101 = + 1 x 25 + 1 x 24 + 0 x 23 + 1 x 22 + 0 x 21 + 1 x 20
-
label_outline106
not_interested 不正解!