LoginSignup
19
10

More than 5 years have passed since last update.

【2進数】両手で1023まで数を数える方法

Posted at

アラタナアドベントカレンダー.jpg

弊社のアドベントカレンダーも12日目です。弊社の人は弊社のエンジニアブログに書く人が多いですが、僕は弊社を知らないエンジニアにも見てもらいたいのでQiitaに書きました。

改めまして、アラタナの甲斐 :pig: です。 普段はバックエンドのプログラマをしております。
よろしくお願いします。

はじめに

この記事で教えること・読むにあたって

記事を読むにあたって前提知識は全く必要有りません、安心してください:ok_woman:
ITの勉強をしたことがある人なら知っているであろう2進数と、皆さんの体に備わっている両手を使用して 1023 まで数えられる方法を紹介いたします:relaxed:
少し長くなりますが、飛ばし読みでも構いませんので、最後まで読んでいただけると幸いです。

両手で数を数える

初心者編(両手10まで数える)

あなたは子供の頃、数を数えるときにどのようにして数を数えましたか?
僕はよく両手を使って数を数えていました。皆さんもそうですよね?

10

お風呂で10数えてから出なさい!と母からはよく言われていましたが、両手がありましたので特に不自由すること無く10まで数えることが出来ていました:v:


……
………

僕が小学生に上がった頃、世はまさにポケモンブーム:cat::cat::cat:
ポケモンを数多く言える人はモテモテでした:princess::princess::princess:

ただし、ポケモンは151匹存在し、とてもじゃないですが10までしか数えられない両手ではオーバーフローになってしまいとても困っていました。
(繰り上がりの回数を覚えておかないといけないのが大変だった…。)

上級編(両手1023まで数える)

そこで便利なのが2進数ですよ!:laughing:
2進数について少しだけ解説をすると…

皆さんが日常生活で使っている数字は10進数と呼ばれるもので、1,2,3,4,5,6,7,8,9ときたら次は10になりますよね。桁上りのタイミングが9の次となる数を10進数と呼びます。
2進数は、1,10,11,100,101,110,111,1000,1001,1010と数えていくような数を言い、桁上りのタイミングが1の次となる数を2進数と呼びます。

数を10進数で数える場合と2進数で数える場合、以下の表のようになります。

10進数 2進数 10進数 2進数 10進数 2進数
1 1 11 1011 31 11111:hand_splayed:
2 10 12 1100 32 1 00000
3 11 13 1101 64 10 00000
4 100 14 1110 128 100 00000
5 101 15 1111 256 1000 00000
6 110 16 10000 512 10000 00000
7 111 17 10001
8 1000 18 10010 1021 11111 11101
9 1001 19 10011 1022 11111 11110
10 1010 20 10100 1023 11111 11111:hugging:

なんとなくわかってきましたでしょうか…?

指の曲げ伸ばし(曲げた状態を0、伸ばした状態を1)で数を数え、
その指の曲げ伸ばしを2進数で例えて、
その2進数10進数基数変換(※進数の変換のこと)してあげれば…

11111_11111.png

両手1023まで数えることができるようになります!!!!:clap:おめ:clap:
(あの頃の僕に会いに行って両手1023方法を今すぐにでも教えたい…!)

それではクイズです

問題1 次の2進数(写真の指)を10進数に変換してください

01100_00110.jpg

あなたは突然ダブルピースが現れて解くことが出来ましたか?
解けない方は下の表を活用してみてください。各指が1本だけ伸びた時の10進数の数の対応表です。

10進数 2進数 写真の指
1 00000 00001 右手親指
2 00000 00010 右手人差指
4 00000 00100 右手中指
8 00000 01000 右手薬指
16 00000 10000 右手小指
32 00001 00000 左手小指
64 00010 00000 左手薬指
128 00100 00000 左手中指
256 01000 00000 左手人差指
512 10000 00000 左手親指

写真の指は、右手人差指、右手中指、左手中指、左手人差指が伸びている状態で、2進数で表現すると0110000110です。
2進数(指の状態)を対応表に当てはめると10進数は、24128256になりました。
伸ばしている指の合計値が答えとなります:v::v:

2+4+128+256=...

A. 390

問題2 次の2進数(写真の指)を10進数に変換してください

10101_01010.jpg

手、手がつる…:fearful:

写真の指は、右手人差指、右手薬指、左手小指、左手中指、左手親指が伸びている状態で、2進数で表現すると1010101010です。
2進数(指の状態)を対応表に当てはめ、合計すると…

10進数 2進数 写真の指
2 00000 00010 右手人差指
8 00000 01000 右手薬指
32 00001 00000 左手小指
128 00100 00000 左手中指
512 10000 00000 左手親指

2+8+32+128+512=...

A. 682

いかがでしたか?

皆さんは両手1023まで数を数えることができるようになりましたでしょうか?

多分難しいと思いますので、
両手1023まで数を数えることができるということだけを覚えて帰って、友達に自慢してみてください:relaxed:

今回は皆さんが解るように対応表を使用して基数変換をおこないましたが、対応表は使わなくても計算で解くことができます。基数変換の方法は解説サイトがたくさんありますので、知らない方で知りたい方は是非調べてみてください:muscle_tone2:


……
………

僕はこの方法でポケモンの数を151匹まで数えられるようになりました(大嘘)
どうやら今現在ポケモンの数は739匹なので、まだまだ数えられますね、1023匹を越えるようになったら足の指でも使ってみてください:footprints:

19
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
10