2進数に触れてみよう

2進数を使って数えよう

今回も教材なしのプログラミングです♪

紙もペンも使わずに、指だけで2進数を勉強してみましょう。

対象年齢は小学校1年生〜ですが、2進数って何?って人も対象になります。

「進数」って聞くと難しそうですかね??

でも絶対大丈夫です!難しい計算も出て来ません!

指だけで2進数の考え方を勉強しちゃいましょう!

それと指導案というタグをつけていますが、学校の先生方が作るガチのやつではないので、ヒント程度に思ってくださいね。

片手で数えられる数

突然ですが、問題です。

右手で数えられる数は幾つでしょうか?

この問題を出すと、大抵答えが二つに別れて返ってきます。

  • 指は5本あるから、5つ!
  • 指は何度も使えるから、幾つでも!

さぁ、どちらが正解でしょう?

答えは…

どちらも正解ですね?

やはり曖昧な問いはダメですね。もうちょっと制限してみましょう。

問題をちょっと変えてみます。

右手で数えられる数は幾つでしょうか?
ただし、一度出した指の形は二度と使えないものとします。

これは例えば、次のようなことです。

  • 親指だけを折り曲げて「1」と数えます
  • そのまま人差し指を折り曲げて「2」と数えます
  • 続けて中指を折り曲げて「3」
  • 薬指を折り曲げて「4」
  • 小指を折り曲げて「5」
  • その次に小指を立てて「6」 ← NG

なぜNGか分かりますね?

そう。

上の薬指を折って「4」を数えた場合と区別がつかないからです。

10進数

では、同じ指の形にならないように数えてみましょう。

ここでちょっと子供達の反応を待ちましょう。
いろんな数え方をする子がいて楽しいですよ。

どうですか?

5までしか数えられないですね?

私たちが自然と使っている数の数え方は「10進数」と言います。

これは0,1,2,3,4,5,6,7,8,9,10、と10個ごとに桁数が上がっていく数え方ですね。

桁数が上がっても10個数えて桁が上がるのは変わりません。

00,10,20,30,40,50,60,70,80,90,100となりますね。

実はこの数え方をしていると、どうしても同じ指の形になってしまいます。

なので、考え方を変えて数える必要があるんですね。

では、どんな数え方をするんでしょうか?

2進数

そこで使うのが「2進数」です。

2進数はプログラミングにとって非常に重要です。

全然難しくないので、しっかり覚えましょうね。

さて、ここで問題です。

10進数で使う数字は 0,1,2,3,4,5,6,7,8,9 の 10個でした。
では、2進数で使う数字はいくつか分かりますか?

答えは「0と1」です。

たった2つしか使いません。

「え?0と1しかなかったら2とか3はどうやって数えるの???」と思いますよね。

ちゃんと2も3も表現できますよ。

やってみましょう。

右手で2進数を数えてみよう

まず、右手を開きましょう。

2進数は0と1しか数字がありませんから、指の状態を次のように割り当てます。

  • 0 = 指を立てる(OFF)
  • 1 = 指を折る(ON)

したがって、指が全て立っている(=じゃんけんのパー)は、0ということになります。

ここから数えていきましょう。

まず右手の5本の指を次のように表します。手のひらをご自身に向けて、次の図と見比べてくださいね。

(*言うまでもないと思いますが、小=小指, 薬=薬指…親=親指のことです?)

0 0 0 0 0

5本の指を立てた状態は、上の通り全て0ですね。

1はどうする?

次は1を作ってみましょう。

2進数も10進数でも1の作り方(指の形)は変わりません。

右の手のひらをご自身に向けた状態で、親指を曲げると1になります。

0 0 0 0 1

2はどうする?

さあ、次が問題です。

2進数の「2」を指で作ってください。

どうやるか分かりますか?

ここで、10進数の考え方を思い出しましょう。

10進数は

  • 0,1,2,3,4,5,6,7,8,9の10個の数字を使い、
  • ひとつずつ数字があがっていき、
  • 9まで進んだら桁が上がって10となります。

2進数もこの考え方と同じです。使える数が0,1しかないのが10進数と違いますね。

ここで一度子供達に考えさせましょう。
ここまで言えば感のいい子はすぐに答えを出しますが、一旦みんなの答えが出るまで待ってあげてくださいね。

答え

答えは次の通りです。

0 0 0 1 0

順番に見ていきましょう。

まず、右の手のひらを00000の五桁の数字に見立てます。

この状態が0ですね。10進数でも0です。

一桁目を1にします。これが2進数の1になります。

次に2を作りますが、2進数で使って良い数字は0と1だけです。一桁目にはすでに0と1を使っているので桁が上がります。

桁が上がるので人差し指がON(曲がります)に、親指は0になります。

難しい???

もし子供達が難しい!と言ってきた場合は、次のフローチャートを見せて教えてください。

機械的に置き換えられるので、簡単ですよ。

右手で32まで数えるフローチャート

右手で32まで数えるフローチャート

結局、いくつまで?

さて、2進数の数え方は分かりましたね?

では、片手でどこまで数えられるかみてみましょう。

答えを教えるのは簡単ですが、ここは子供達に数えさせましょう。

いっせーので答えを全員で言ってもいいですし、一人ずつ発表でもいいと思います。

答えはどうなりますかね??

では、答えを発表します!

片手で数えられる数字

10進数
0 0 0 0 0 0
0 0 0 0 1 1
0 0 0 1 0 2
0 0 0 1 1 3
0 0 1 0 0 4
0 0 1 0 1 5
0 0 1 1 0 6
0 0 1 1 1 7
0 1 0 0 0 8
0 1 0 0 1 9
0 1 0 1 0 10

だいぶ指がきつくなって来ましたか?

慣れてくるとスイスイできるようになりますよ。まだ全部の指を使い切っていないので、続けますね。

10進数
0 1 0 1 1 11
0 1 1 0 0 12
0 1 1 0 1 13
0 1 1 1 0 14
0 1 1 1 1 15
1 0 0 0 0 16
1 0 0 0 1 17
1 0 0 1 0 18
1 0 0 1 1 19
1 0 1 0 0 20
1 0 1 0 1 21
1 0 1 1 0 22
1 0 1 1 1 23
1 1 0 0 0 24
1 1 0 0 1 25
1 1 0 1 0 26
1 1 0 1 1 27
1 1 1 0 0 28
1 1 1 0 1 29
1 1 1 1 0 30
1 1 1 1 1 31

やっと全部の指が曲がりました。

と言うわけで、答えは31までですね。0も数えると32個まで数えられます。

両手で数えられる数字

では、両手で数えられる数は幾つでしょうか?

ちょっと難問です。64とか、100とかいろんな答えが出てくるので、しばらく子供達に考えさせましょう。

では、ここでヒントを出します。

指が一本だけ立った状態に注目してください。

右手 10進数
0 0 0 0 1 1
0 0 0 1 0 2
0 0 1 0 0 4
0 1 0 0 0 8
1 0 0 0 0 16

2進数で桁が増えていくと、10進数の数がどうなるか分かりますか??

そう! 2倍になっていきます!

では、左手を追加してみましょう。

左手 右手 10進数
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 1 0 2
0 0 0 0 0 0 0 1 0 0 4
0 0 0 0 0 0 1 0 0 0 8
0 0 0 0 0 1 0 0 0 0 16
0 0 0 0 1 0 0 0 0 0 32
0 0 0 1 0 0 0 0 0 0 64
0 0 1 0 0 0 0 0 0 0 128
0 1 0 0 0 0 0 0 0 0 256
1 0 0 0 0 0 0 0 0 0 512

答えは512!と思うのは早いです。違いますよー。

31,32あたりを見た方がわかりやすいかもしれません。

先ほど学んだように、右手だけだと31まで数えられますね。この31というのは、右手の指が全部折れ曲がった状態です。

左手 右手 10進数
0 0 0 0 0 1 0 0 0 0 16
0 0 0 0 0 1 1 1 1 1 31
0 0 0 0 1 0 0 0 0 0 32

つまり、2の5乗 – 1が右手で数えられる最大の数になります。

25 = 32 ですから、そこから1を引けば31になりますね。

では、10本の指を使った場合は???

同じ式で求められますので、簡単ですね。

210 – 1 = 1023

となります。

なんと!両手の指だけで1023(0を含めると1024個)まで数えられるんですねー?

2の乗数は小学生では理解しにくいので、もし教える場合は乗数ではなく上の図の「1,2,4,8,…256,512を全部足した数」になるとした方が良いかもしれません。

最後に

今日は手だけでプログラミングの勉強をしました。2進数はとっつきにくいかもしれませんが、プログラミングの基礎となるので覚えておいて損はありません。

1024まで数えるのは大変ですし、乗数を教えるのも難しいと思いますので、小学生の間は片手で数えられる数字として31(0を含めると32)という箇所まででもいいかもしれませんね。

何事もちょっとずつですね♪

ではまた?

コメント