どうも!LSSです!!
今日は、数の話をします。
- まずは10進数の話から
- 0(ゼロ)も仲間に入れてあげて!
- 1桁の数字は10種類ある!
- 10進数とは
- もしも、10じゃなかったら…?
- 2進数。0と1以外の数字使用禁止ルール
- 2進数って必要?
- 16進数、なんていうのもあります
- なんとか進数、の「なんとか」の部分が大きいほど…
- というような記事を
まずは10進数の話から
小学校にあがる前か、その後ぐらいに、「すうじ」について皆さん覚えられたかと思います。
今日の話はまず、そのおさらいから始まります。
1(いち)、2(に)、3(さん)、4(よん)、5(ご)、6(ろく)、7(なな)、8(はち)、9(きゅう)
1に1を足すと2になり、2に1を足すと3になります。
「1を足すと」じゃなくて「次の数」として覚えたかもですね。
ところで「9の次の数は?」というと…10(じゅう)ですね。
ここで、これまで1文字で済んでいたのが突然、2文字になります。
この「2文字」の事を「2桁」ともいいますね。
そして「10の次の数は?」というと11(じゅういち)になります。
…また最初の1(いち)がくっついてきました。
その次は12、13、と最初の頃に使った数字が「じゅう」にくっついて同じ順番に出てくる事になります。
0(ゼロ)も仲間に入れてあげて!
1桁の数字が、1,2,3,4,5,6,7,8,9。
2桁になってからが、10,11,12,13,14,15,16,17,18,19。
1の位が繰り返されていますが、すると10に対応する1桁の数字がいない…?って事になります。
ここは0も仲間に入れてあげます。
すると、
1桁の数字が、0,1,2,3,4,5,6,7,8,9。
2桁になってからが、10,11,12,13,14,15,16,17,18,19。
スッキリしましたね^^
1桁の数字は10種類ある!
0を仲間に入れた事で、0~9の数字は10種類ある、という事になります。
10種類使い切ったところで桁が上がり、99まで数えると今度は100(ひゃく)という3桁の数字を使う事になります。
0~9までが10種類、そして10の位でいうと一桁の数字(9とか)を0として扱うと、
00~99までの100種類の数字を使った後で3桁になります。
10進数とは
このように、「10で桁があがり、10を10使ってまた桁が上がる」という数字のルール、これを10進数といいます。
かなーーーり昔から、ほとんどの人類がこの10進数を使い、慣れ親しんできました。
文明の起源が異なっても、やはり10進数が使われている理由としては、
「人間の両手の指が合わせて10本あるから」
という説が有力です。
※ところで、日本で「万・億・兆」と4桁区切りの単位がふられてるのに、欧米では「サウザンド(キロ)・ミリオン(メガ)・ビリオン(ギガ)」って3桁区切りになってるのはなぜ???
もしも、10じゃなかったら…?
つまり、「10で繰り上がる10進数じゃないと数学は成立しない」というわけではなく、例えば「5つあるりんごはどう数えても5つある」んです。
それを「5」という(10進数の)数字で表現するか、別の表現方法を用いるか、で。
で、10進数以外の進数、2進数の話に入ります。
2進数。0と1以外の数字使用禁止ルール
10進数は10で繰り上がります。
じゃあ「2進数だったら?」というと、案の定「2で繰り上がる」表現方法です。
つまり、↓こうなります。
0(ゼロ)の次は1(いち)、1の次は10(いちゼロ)、10の次は11(いちいち)、11の次は100(いちゼロゼロ)。
あっという間に3桁に達してしまいましたねw
ちなみに「同じ数」を10進数で表現したものと、2進数で表現したものを並べるとこうなります。
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
(左が10進数、右が2進数)
2進数って必要?
すぐに桁上がりしてしまい、文字数を多く使ってしまう2進数。
そんな数え方に需要あるの?と思われるかも知れませんが、これが大アリにアリです!
身近なところではコンピュータ。
この場合、パソコンに限らず、スマホでも電卓でもそうなんですが、そもそも
「電気信号を使って計算してくれる機械を作ろう!」
という、そもそものところから、「電気が通じてるか通じてないか」を判断材料にしているので、内部的には2進数で処理されています。いまだに。
他にも「アリかナシか、それだけ判断できればいい」という場面では、2進数の方が都合がいいですね。
16進数、なんていうのもあります
2進数は10進数に比べて1桁で表現できる範囲が小さいため、すぐに桁が増えてしまいましたが、逆に1桁で表現できる範囲が大きい「16進数」というのもあります。
16種類の数字を使った後で桁上がりするのが16進数ですが、1桁の数字は「0~9」の10種類しか用意されていないので、足りない部分はABCDEFで補います。
先ほどの10進数と2進数を並べたものに、16進数も付け足すと、以下のようになります。
0 0 0
1 1 1
2 10 2
3 11 3
4 100 4
5 101 5
6 110 6
7 111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F
16 10000 10
(左が10進数、真ん中が2進数、右が16進数)
ちなみに、この調子で数を増やしていくと、2桁の16進数最大の数「FF」は
255 11111111 FF
という事になります。
10進数だと3桁必要、2進数だと8桁必要ですが、16進数だと2桁で済んでしまうんですね^^
なお、4桁の2進数最大の「1111」が1桁16進数最大の「F」であり、8桁の2進数最大の「11111111」が2桁16進数最大の「FF」となっています。
これは「2の4乗(2を4回掛け合わせた数)が16」だからです。
「なんで?」っていう部分は割愛しますw
なんとか進数、の「なんとか」の部分が大きいほど…
より大きい数を、より少ない桁数で表現できる、特に
「16進数は2進数の桁数の4分の1の桁数で済む」
というところまで書きました。
応用例としては例えば、昨日公開した
でも使っています。
- 壁があるかないか、のデータを表現するには、2進数で事足ります。
- 更にそれを16進数に置き換える事で、データ文字数が4分の1で済みます。
パラレル迷路は、迷路データとして合計120枚の壁の有無を示す必要がありましたが、それを
6e6736666fedeef1efb8d7f610a8e1
のような「16進数30桁(30文字)」で済ませてるんですね^^
なお、もしも「256進数」なんてものを用意して使用した場合、半分の15文字で済む事になります。(←コンピュータでやるには、あまり意味のない戯言になりますw)
プログラム的な意味では、既存利用されている「〇進数」に囚われず、文字や記号をかき集めてオリジナルの「〇進数」を作って使うのも可能ですね。
0~9、a~z、A~Zだけでも62種類カバーできますし、さらに順番をかき混ぜると「簡易暗号化」にもなりますw
というような記事を
はてなブログ仲間の さじさん(id:conasaji)からTwitterで、
先生、素朴な疑問。htmlがコメント欄でそれがリンクされているのはどこに作った迷路のルートが保管されるんですか?コードの文字列がルート?
— さじ (@conasaji) 2020年10月4日
ってネタをふっていただいたので、記事にしてみました^^
あと、パラレル迷路関連では「データの受け渡しにURLを使う」の解説として、URLの基本的なところから書く、という記事ネタもあったりします。
(スマブラにマイクラが参戦!?っていう凄いニュースも記事ネタにしたい気マンマンだったりしますがwww)
ってなとこで、今回はこのへんで!
次回もまた、よろしくお願いします^^