2017年4月21日金曜日

n進数の話

友人から「2進数」について質問されました。
そこで私が「2進数」を説明するために考えた事をココに書いておきます。
学術的に正しい説明かどうかは知りません。
ただ友人に理解してもらえるように書いたつもりです。

まず「2進数」とは何か?
 10進数って1桁が0~9までの10個の数字があるよね。
 10個の数字があるから10進数って言うのだと思うん。
 同じ考え方をすると2進数は1桁が0と1しかありません。
 2個の数字しかないから2進数って言うのだと思うん。

ゲームをしよう!
 10進数ゲーム!
  ルール:「じゅう」って言ったら負けね
   0(ぜろ)
   1(いち)
   2(に)
   3(さん)
   4(よん)
   5(ご)
   6(ろく)
   7(なな)
   8(はち)
   9(きゅう)
  その次は?「じゅう」って言ったら負けだよ?
   なので10の事は「いち、ぜろ」って言えばいい。
   「いち」と「ぜろ」の2つを言ったよね?
   つまり、それが2桁なんだ。
 では同じように2進数ゲームをやってみよう!
  ルール:「に」って言ったら負けね
   0(ぜろ)
   1(いち)
  その次は「2」を何て言えば良いの?
  そもそも違うよね?2は使わないんだから。
  10進数の場合、10は2桁ですよね。
  2進数の場合、2は2桁なんですよ。
  なので0、1の次は10なんです。
  10進数で「じゅう」って呼ばれる一桁は存在しません。
  2進数でも「に」って呼ばれる一桁は存在しないんですよ。
  では話を戻して
   0(ぜろ)、1(いち)の次は10「いち、ぜろ」ですね。
  せっかくなので、もっと先まで数えてみましょう。
  0(ぜろ)、1(いち)、
  10(いち、ぜろ)、11(いち、いち)、
  100(いち、ぜろ、ぜろ)、
  え?もぉ100なの?
  そうですよ、10の次は11、これはわかるでしょ?
  11の次は12、、、いや2は使っちゃダメだって。
  んじゃ繰り上がりして21、、、いや2入ってるし(笑)
  そしたら桁上がりするしかなでしょ、と言う事で100。
  すぐ桁上がりしちゃうので、もう少し数えてみよう!
   0、1、
   10、11、
   100、101、
   110、111、
   1000、1001、
   1010、1011、
   1100、1101、
   1110、1111、
   10000、、、、、
  わかった?これが2進数ね。

指折り数える事も可能だよ!
手の指、両手で10本あるよね?(ない人ごめんなさい)
 まず10進数。数が増えるごとに指を折ってみよう。
 両手を開き、手のひらを自分に向けてください。
  0は両手を開いてます。
  1は右手の親指を折りましょう。
  2は右手の親指と人差し指を折りましょう。
  3は右手の親指と人差し指と中指を折りましょう。
  4は右の親、人指し、中、薬
  5は右の親、人指し、中、薬、小
  6は右の親、人指し、中、薬、小、左手の小
  7は右の親、人指し、中、薬、小、左の小、薬
  8は右の親、人指し、中、薬、小、左の小、薬、中
  9は右の親、人指し、中、薬、小、左の小、薬、中、人
  10は両手の指、全部折るよね。
 次は2進数、とりあえず片手だけで十分かも。
 右利きだと思うので、右手を例に書きます。
 まず右手を開き、手のひらを自分に向けてください。
 指を伸ばしている状態を0、指を曲げている状態を1とします。
  右手の指5本伸ばしている状態は「00000」ですよね?
  つまり0は「00000」です。
  1は「00001」です、つまり親指だけ折り曲げですね。
  2は「00010」です、つまり人差し指だけ折り曲げです。
  3は「00011」です、親と人を折り曲げです。
  4は「00100」です、中だけ折り曲げです。
  5は「00101」です、親と中です。
  6は「00110」です、人と中です。
  7は「00111」です、親と人と中です。
  8は「01000」です、薬です。
  9は「01001」です、親と薬です。
  10は「01010」です、人と薬です。
  11は「01011」です、親と人と薬です。
   :
   :
  31は「11111」です、親人中薬小の全指を折ります。
 つまり2進数の場合、片手で0~31まで数えられるんですよ!

とりあえず、こんな感じ。
難しいですか?
後日もう少しわかりやすいように絵か写真を入れるかも。

P.S.上記の事を応用すれば何進数でも対応可能だよね!