今回の記事では進数、進法について解説したいと思います。
2進数、8進数、10進数、16進数、60進数などなど。
「進数」もしくは「進法」って言葉は聞いたことありますか?
パソコン使う方やクイズよくする方なら聞いたことあるかもですね。
エンジニアの方は覚えとくと何かと便利だったりします。
あとは考える系のクイズでたまに2進法や16進法がでてくることがありますね。
なんかググったら、昔は中2で習ってた時代もあって、最近は数学Aで習うことがある程度らしいですね。学校によっては学習すらないらしい。。。
知っていたらいろいろ便利な側面もあるのですけど。。。
例えば、両手で1024まで数字を数えられるとか。
それくらいしか思いつかなかった・・・・
エンジニアなら覚えてると何かと重宝したりするんですけどね
進法、進数とはなにか?普段使う10進法の解説
進法とはなにか?
まず進法について説明しますね。
進法というのは、数の数え方の種類のことです!
例えば、2進法というのは0と1という2種類の文字を使った数字の数え方
10進法は、0から9の10種類の文字を使った数字の数え方のことですね。
わかりやすいようにまずは10進法で解説します。
10進法の解説
まず、普段使っている10進法について説明します。
10進法というのは、普段我々が使っている
「0,1,2,3,4,5,6,7,8,9」の10個の数字を使った数え方です。
「9」まで行ったら、その次の数字は「10」に繰り上がり
「19」まで行ったら、その次の数字は「20」に繰り上がり
「99」まで行ったらその次の数字は「100」に繰り上がります。
一桁の時は「01、02....09」と考えれば「9」から「10」になる理由もわかりますかね?
数字の最初は「0」から始まり、最後は「9」まで行ったら、その次は位が繰り上がってまた「0」から始まる数字の数え方を「10進法」といいます。
10進法では、位が1つ繰り上がるとそれは10の累乗になります。
10、100、1000、10000、100000。すべて10の累乗です。
進数とは?進法とは違うの?
次に進数についてですが、進数というのは進法で表される数字のことを指します。
2進法では0と1の「2個の数字」しか使わないので2進数。
10進法では0~9の「10個の数字」を使うので10進数。です。
具体的に例文を上げると
「10進法で表された「15」という10進数を、2進法で表すと「1111」という2進数になる。」
というわけです。多分。
進数と進法の違いなんてよく分かりません。ググってもよくわからないし。多分これで会ってるんじゃないかな。違ったら教えてください。
進数と進法はよく似てるので結構な頻度で間違えられます。
「2進数で表された「10」は10進数ではどのように表すか?」とかですね。
正しくは
「2進法で表された「10」という2進数は、10進法ではどのように表すか?」
というようになる。はずです。多分!
10進法の他に、有名な進法として2進法、8進法、16進法、60進法等があります。
2進法について解説
上で10進法については解説しました。
10進法は0-9の9個の文字を使った数字の数え方でしたよね?
それに対して2進法は、0と1という「2つ」の文字を使った数字の数え方です!
2進数表記 | 10進数表記 |
---|---|
00 | 0 |
01 | 1 |
10 | 2 |
11 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
1000 | 8 |
1001 | 9 |
表のように、2進法では0と1のみで数字が表されます。
1の次は繰り上がって10
11の次は繰り上がって100
111の次は繰り上がって1000
1111の次は繰り上がって10000
となります。
特徴としては、10は10進法では2
100は4
1000は8
10000は16
100000は32
といったように位が1つ繰り上がると2の累乗になる点です。
2進法は、ある程度までは指を使うと簡単に覚えられます。
2進法を使った手遊び
指を曲げた状態を0、伸ばした状態を1として、
親指を1の位、曲げた状態は十進数0、伸ばした状態は十進数1
人差し指を2の位、曲げた状態は十進数0、伸ばした状態は十進数2
中指を3の位、曲げた状態は0、伸ばした状態は4
薬指を4の位、曲げた状態は0、伸ばした状態は8
小指が5の位、曲げた状態は0、伸ばした状態は16
として0から数えていくと、最大で片手で31まで数えられます。
さらに、もう片方の手を、
親指32、人差し指64、中指128、薬指256、小指512とすると
すべての指を開いた状態で1023まで数えることができます。
親指を開いた時に左に手を軽く振り、
親指を閉じるときは右に手を軽く振りながら1から数えると数えやすいですよ。
2進数はパソコンでよく使われている
あとは、パソコンで2進数が使われています。
パソコンなどの電化製品は、実は「オンとオフ」しか判断できません。
電流が流れる=「1」、電流が流れていない=「0」です。
なので、電気を使う機会はすべて2進数で処理しています。
0か1、どちらかの数字が入っている最小のデータの単位を「1bit」といいます。
それを8個合わせた、8bitのデータを1byteとして、PCではデータを管理しています。
具体的にどんな感じかというと、PCは2進数しか覚えられないので、文字コード表を使って文字を2進数に変換してPCに覚えさせています。
よく使われるのはASCIIコードというものです。
コード表に合わせて文字を2進数に変換しています。
アルファベットの「A」は、2進数で「01000001」
アルファベットの「B」は、2進数で「01000010」
アルファベットの「C」は、2進数で「01000011」
などですね。
日本語は「Shift_JIS」や「EUC」などの文字コードがよく使われます。
それらの文字コードや外国語の文字コードをまとめたものが「UTF-8」などのUnicodeと呼ばれるものですね。
16進法について解説
進法についてそろそろわかってきたのではないでしょうか??
次は16進法についての解説になります。
16進法とは、16個の文字を使った数字の数え方です。
0-9の10個の数字と、足りない部分はアルファベットの「A-F」を用いて
16個の文字で表されます。
16進数表記 | 10進数表記 |
---|---|
8 | 8 |
9 | 9 |
A | 10 |
B | 11 |
C | 12 |
D | 13 |
E | 14 |
F | 15 |
10 | 16 |
11 | 17 |
1-9までは10進法も16進法も同じですが、
16進法では10以降での表現が変わっています。
表のように、16進法では10進数16(16進数F)で桁が繰り上がります。
Fの次は繰り上がって10
FFの次は繰り上がって100
FFFの次は繰り上がって1000
FFFFの次は繰り上がって10000
となります。
10は10進法では16
100は10進法では256
1000は10進法では4096
10000は10進法では65536
100000は10進法では1048576
といったように位が1つ繰り上がると16の累乗になります。
なぜ16進法という中途半端な数字なの?
16進法が作られた一番の理由は、2進数と相性が良いためです。
2進数の4桁の最大値を1桁で表すのに、16進数がちょうどいいわけですね。
例えば
2進数で「1111」を表すとき
10進数は「15」ですが16進数では「F」で表されます。
16進法の1桁は2進法で4桁なので、16進法5桁なら2進数は20桁。
16進法n桁=2進法(nx4)桁で表現されます。
2進数の表記は機械には優しいのですが人間には読みにくいです。
なので、人間にも読めるように簡単に変換できるよう16進法ができました。
例えば、10進法で「20300」を表すとき
2進法では「100111101001100」です。
これを4桁で区切り、16進法に当てはめると
0100 | 1111 | 0100 | 1100 |
4 | F | 4 | C |
となり、16進数「4F4C」で表すことができます。
エンジニアだと「0x4f4c」ですね。
0xというは16進数という目印みたいなもんです。
プログラムや仕様書などを16進法で表現しておけば、長い2進数を書く必要もありませんし、処理においても簡単に2進数に変換できるので、複雑な処理がいらないので楽なのですね。
それが16進法が作られた理由です。
8進法について
ここまで読んだ方はもうわかると思いますが、
8進法は0-7までの8種類の数字を使って数字を数える方法です。
7までいったら次は10になり、
17まで行ったら次は100になります。
なぜ使いにくい8進法があるのかというと。。。。
これまたパソコン用で2進数関連なんですね。
2進数3桁の最大値、111を8進数に変換すると7になるんです。
なので、2進数3桁づつを切り取って簡単に直せるのが8進法なのですね。
16進法は2進数4桁のための進法
8進法は2進数3桁のための進法
というわけです。
実は生活になじみのある60進法
聞きなれない言葉だと思いますが、60進法は生活になじみがあります。
10進法は普段使う数字といいましたよね?
60進法は、時間に関連することに使われています。
60進法は「0~59」の60個の数字で表されます。
時間で、59秒までいったら、次は1分ですよね?
そして、59分59秒になったら、次は1時間です。
このように、0-59で表す時間のことを60進法といいます。
ちなみに、「分」と「秒」は60進法ですが「時」は10進法です。
59時間を超えた後の単位なんてありませんもの。
時を例えるなら24進法で0-23ですかね。次は1日です(笑)
5進法と謎の2・5進法
5進法は、今までの流れだと「0-4」の5つの数字で表される数字の数え方です。
ですが5進法ってあんまり使われないんですよね。
5までだから使うんじゃないかって思うでしょう?
でも、手の指の数とかも0−5なんですよね。だからよく使うのは6進法なんです。
5進法を使うのは2・5進法で使うくらいじゃないかな?
2・5進法というのもある
5進法は「2・5進法」というのでも使われています。
2・5進法は、5と10の2つで桁が繰り上がる進法です。
書いてもよくわからないと思うので、そろばんで考えてください。
2・5進法はそろばんで使われます。
0-4までは、下の4珠を上にはじいていき、5になったら上の珠を下に下げます。
なので、ここまでは5進法です。
次に、上の5の珠が1つ。下の珠が4つで9個になり
その次は位が繰り上がって10の位の珠を1つ上にあげます。
という感じで、下4珠の次は上1珠になるので、それは5進法。
そして、9まで数えた後に上2珠にならず
繰り上がって10の桁の珠を1つ動かすのでそこは2進法といえます。
「上の珠のところが0と1しかないのでそこは2進法なんですね。」
なので、2・5進法と呼ばれます。
また、ローマ数字も2・5進法です。
「IIII」の次が「V」
「VIIII」の次は、「VV」ではなく「X」になります。
20は「XX」、30は「XXX」、40は「XXXX」
そして、「XXXXVIIII」で59となり、
50はXXXXXではなく「L」になります。
99である「LXXXXVIIII」の次は「LL」ではなく、「C」。
2進法と5進法がまじっているので立派な2・5進法です。
よく使われる6進法
6進法なんですが、意外と種類があります。
例えば「正」の字。
多数決をとったりした時に、正の字を書いて数字を数えたりしますよね?
なし~正の字まで。0-5なので6進法です。
例えば、手の数。
子供が数える時に片手で5、両手で10、足の指も入れて20!とかいいますよね。
これも6進数です。6は次の手、11も次の手になりますからね。
1桁が最大5までになるのが6進法です。
サイコロは1-6の6進法ですよね。
いろいろなことろで使われています。
そのほかの進法
他に、「3進法、9進法、12進法、20進法、35進法」などが存在しますが...
カットします。
いや、同じような説明にしかならないし・・・
それに12進法以外あんまつかわないんじゃないかな
12進法はダースの考えです。1,2,3,4,6,12と多彩な数字で割れるので贈り物とかする時は1ダース(12個入)とかがおすすめーみたいな感じで使いますよね。
12で繰り上がって1ダースになるので、12進法です。
35進法は1-9の数字とa-zのアルファベットを使い、35が10と表される進法です。
35進法100だと1225ですね。使ってるの見たことありませんが。。。
〇進法から10進法への変換方法
よく使われる10進法へ変換する方法を紹介します。
10進数に戻す方法ですが、
まず、何桁目が10進数で何の数字を表しているかを計算します。
くらいが繰り上がると〇進数の数字の累乗になると説明しましたよね?
2進数の場合
1桁目=2の0乗=0
2桁目=2の1乗=2
3桁目=2の2乗=4
8進数の場合は
1桁目=8の0乗=0
2桁目=8の1乗=8
3桁目=8の2乗=64
そして次に、その桁の表す数字を、実際の桁数に掛け算します。
1桁目は0をかけないで1をかけましょう。(笑)
なので、2進数で「101」の場合
1桁目は 1x1=1
2桁目は 0x2=0
3桁目は 1x4=4
となりました。
あとは、それを全部足すだけです。
1+0+4=5となり、2進数の「101」は10進数で「5」となります。
8進数「402」の場合
1桁目が1、2桁目が8、3桁目が64を表すので
(2x1)+(0x8)+(4x64)=2+0+256=258
となり、8進数「402」は10進数では「258」となります。
16進数「A5F2」の場合
1桁目1、2桁目16、3桁目256、4桁目4096を表すので
(2x1)+(15x16)+(5x256)+(10x4096)
となり、
2+240+1280+40960 = 42,482
となり、16進数「A5F2」は10進数で「42,482」となります。
まとめ
進数と進法のことはなんとなくわかりましたかね?
〇進法は、〇で数字の位が1つ繰り上がる「数字の数え方」
8進法なら0-7で、8はないんです。10が8になります。
16進法は10進数で15を表すFまでしかなくて、10が16を表します。
もう大丈夫ですね?
もし何かわからないことがありましたら、お気軽にコメントやお問い合わせから質問してください。
ではではー。閲覧ありがとうございました。