読めばわかる n進数
私たちが普段使っている数は何進数でしょうか?
正解は10進数です!
n進数って何だろう?どういう仕組みなんだろうって、なかなかわからないものです。
わかってしまえば、なーんだという簡単なものです。
この記事を最後まで読んでいただければ、わかりますよ!
実は私たちの身の周りにも、10進数以外のもがたくさんあります。
何だと思いますか?
考えておいてくださいね。
後で紹介しますね。
では、いってみましょう!
順を追って、解説していきます。
進数って何?
「進む数」です。
「いや、なにが進むねん!」というツッコミもあろうかと思います。
何が進むかというと「桁」です。桁が1つ増えるのです。
「n進数」は、「1桁で表せる大きさがnに到達したときに桁上がりする」という数の表記方法のことです。
一番身近な10進数は、1桁で表せる数が0~9。
つまり、10になったら桁上がりしますよね。
だから10進数です。
ここまでOK?
まとめると
n進数 = 1桁で表せる数の最大値がn-1である。
つまり、10進数だとn=10ですから、1桁で表せる数はn-1=9。
ということがわかります。
2進数だと1桁で表せるのは、1までということになります。
0か1しか書けないということですね。
めちゃくちゃ桁が増えそうです。
10進数と2進数
2進数だとどれぐらい桁が増えるのでしょうか。
試しに10進数表記のものを2進数表記にしてみましょう。
( )内を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進数と16進数
では次は16進数です。
1桁で0~15までを表現するのは、どうやるのでしょうか?
また、桁数増は10進数と比べて、遅くなるのかな?
2進数同様( )内を10進数、{ }内を16進数で書きます。
1~9は10進と16進は同じなので省略します。
10進数の10以降だけ見てみましょう。
(10){A}
(11){B}
(12){C}
(13){D}
(14){E}
(15){F}
(16){10}
(17){11}
(18){12}
1桁でn-1、つまり10進数表記の15までを表現します。
10以降はアルファベットのA~Fを使います。なるほど!ですね。
10進表記の16になった時に桁上がりして{10}となります。
桁上がりも遅いです。
何進数でも作れます
8進数は、1桁で表現できるのが0~7です。
8になったら桁上がりして10になります。
つまり10進数の9は、8進数だと11。
10進数の10は、8進数だと12です。
これを応用すれば、何進数でも可能です。
例として、5進数を考えてみましょう。
5進数は1桁で表現できるのが0~4です。
5になったら桁上がりして10になります。
10進数の6は、5進数だと11。
10進数の7は、5進数だと12です。
よくある勘違い
ここで誤解しないでいただきたいことがあります。
それは、n進数というのは表記方法だということです。
実際の数は同じものです。
書き方が違うだけで中身は同じです。
あなたが、姓で呼ばれようが、名で呼ばれようが、あだ名で呼ばれようが、あなた自身が変わることがないのと同じです。
試しに10進数の5を他の進数で書いてみます。( )内がnです。
5(10) 10進数表記だと5
101(2) 2進数表記だと101
12(3) 3進数表記だと12
11(4) 4進数表記だと11
10(5) 5進数表記だと10
なんか、こんがらがってきたかもしれません。
まあ、そんなもんだ!ということでいいでしょう。
IT業界でも使うのは、2進数、8進数、16進数ぐらいです。
ビット(bit)とバイト(byte)
※この項目はIT業界以外の方は、読みとばしてもいいかも。
コンピュータ内部では、すべて2進数で表されます。
めちゃくちゃ簡単に言うと、「電気が通っているか否か」で0か1かを表現しています。
コンピュータ内部の、この1桁のことをビット(bit)といいます。
そして、コンピュータは8bitを1つのまとまりとして扱います。
それをバイト(byte)といいます。
1byte=8bitです。
プログラマーは、ビット単位で操作するプログラムを作ることもあります。
2進数表記だと桁が多くて見づらいですよね。
そこで、16進数を使います。
1byte=8bitの前4桁と後4桁に分けて16進数表記するのです。
例:
2進数:10011111 → 16進数:9F
という感じです。
前半の1001を16進表記すると9です。
後半の1111はFです。
身の周りのその他の進数
時刻を表すときに使う分や秒。
この2つは60進数です。
「いや、2桁になってるやん!」というツッコミは当然です。
ちょっと冷静に考えてみましょう。
分や秒は0~59まで存在します。
16進数なら10~15のかわりにA~Fを使って1桁で書けました。
59までとなるとどう書けばいいのでしょうか。
アルファベットの大文字小文字全部を使わないといけません。
それに、「12時Z分f秒」とか言われてもわからんでしょ。
ということで、分や秒は60進数だけど10進表記をしています。
ですから、「桁」に該当するものを「時」「分」「秒」だと考えます。
これらが「桁」の代わりです。
「秒」が60になったら、1つ上の桁「分」が増える。
「分」が60になったら、1つ上の桁「時」が増える。
と考えるとわかりやすいと思います。
他にも「日」「月」「年」も「n進数」です。
これらについては、別途まとめた記事があるので、ご参照ください。
余談を3つほど
その1:
人間の指の数が10本だから10進数がわかりやすい。
だからずっと使われてきたのだと思います。
もし人間の指が12本だったら12進数が普段使いされているのでしょうね。
その2:
有名なゲーム「Final Fantasy」の略称は「FF」。これは、
1byteの最大数=11111111
を
16進表記したもの=FF
が由来とも言われています。
(あくまで想像の域を出ない噂です)
その3:
初期のファミコンソフト、ドラゴンクエストⅡの最大所持金は65,535ゴールドでした。
「やくそう」を売ろうが、モンスターを倒そうが、何をしてもそこからは増えない仕組みだったんです。
その理由は、2byteを使って表現できる最大数が65,535だからです。
つまり当時のドラゴンクエストⅡでは、所持金の項目を2byte=16bitを使って管理していたということがわかります。
ちなみに、10進数の65,535を2進数で表すと下記のとおりです。
見やすいように4桁ずつで区切って空白を入れています。
1111 1111 1111 1111 = 65,535
(to:IT業界人向け)
※符号なし整数です。符号ありだと-32,768です
いかがだったでしょうか。
最後までお読みいただき、ありがとうございます。
「わかった」という方は「スキ」を押してくれるとうれしいです!
いただいたサポートは、おじさんの活動費としてとんでもなく有用に使われる予定です。