TheDigitalArtist / Pixabay

プログラミングでは日常生活で普段使っている10進法のほか、2進法・8進法・16進法といった数字の表記法もよく使われます。そこで今回はこれらの進法の特徴や表記方法を中心に解説をまとめてみました。

スポンサーリンク

10進法とは

10進法とは、私たち人間が普段つかう表記法です。10進法で使う数字はアラビア数字0,1,2,3,4,5,6,7,8,9の10種類です。10進法の数字の桁は右から順番に1の位,10の位,100の位,1000の位……を表しています。

例として4903を図示しながら分解してみます。4903は、4,9,0,3の4個の数字でひとつの数字を表しています。

4×1000+9×100+0×10+3×1

↓ さらに以下のようにまとめることができます。

4×103+9×102+0×101+3×100

103の位、102の位、101の位、100の位のように10進法ではすべて10nという形をしています。この10を10進法の基数または底(てい)といいます。また、基数である10の右上に乗っている数字は指数といいます。

2進法とは

2進法はコンピュータが数字をあつかうときに使います。2進数で使う数字は0と1の2種類です。2進数は右から順番に1の位、2の位、4の位、8の位になります。

例として1110を分解してみます。

1×8+1×4+1×2+0×1

↓さらに以下のようにまとめることが出来ます。

1×23+1×22+1×21+0×20

↓ 足した和は

8+4+2+0 = 14

23、22、21、20の位のように2進数ではすべて2nという形をとっています。この2を2進法の基数または底といいます。

2進数は1,2,3,4,5といったように数字が続いていくのではなく、0,1ときたら1繰り上がって10,11,100,101,110と数字が続いていきます。分かりやすいように10進数と2進数をまとめました。

 

10進法 2進法 10進法 2進法 10進法 2進法
0 0 9 1001 18 10010
1 1 10 1010 19 10011
2 10 11 1011 20 10100
3 11 12 1100 21 10101
4 100 13 1101 22 10110
5 101 14 1110 23 10111
6 110 15 1111 24 11000
7 111 16 10000 25 11001
8 1000 17 10001 26 11010

かめしょー
次に基数変換の方法について解説していきます!

基数変換の方法

10進法で表記した54を2進法で表してみます。2進法で表記するには10進法の数字を2で割り続けます。

54÷2 = 27…余り0

27÷2=13… 余り1

13÷2=6… 余り1

6÷2=3…余り0

3÷2=1…余り1

1÷2=0…余り1

余りの数字を下から上の流れでまとめると、110110となります。この数字が2進数になります。基数変換はこのように計算することで出来ます。各桁の重みを計算すると以下のようになります。

1×25+1×24+0×23+1×22+1×21+0×20

2進法がコンピュータで使われている理由

コンピュータでは数を表現するときに電源をOFFにする、電源をONにするといったような2つの状態を利用します。この2つの状態を【電源をOFFにする…0、電源をONにする…1】のように0と1の数字で対応します。電源をたくさん設置していけば巨大な数字でも表現することが出来ます。

もちろん0~9を使う10進数でも大きな数字を表現できますが、コンピュータに対して複雑な仕組みを作る必要があります。計算処理にかかる時間が2進数で行う計算処理よりもかかるでしょう。

人間にとっては2進数は桁数が多くなるから扱いづらいかもしれません。10進数の方が桁が少なくて済むし、計算間違いも減るでしょう。直感的にも数字を判断しやすいです。

一方コンピュータは計算間違えをすることもなく、桁がどれだけ多くても問題ありません。コンピュータにとっては計算がシンプルであり、数字の種類が少ない方が良いのです。

コンピュータの計算処理

人間は10進数、コンピュータは2進数を使います。そのためコンピュータは人間から受け取った10進数をまず2進数に変換します。変換して2進法で計算を行ったあと、再び2進数を10進数に変換します。

14+25
①2進数に変換
1110+11001
39
③10進法へ変換
②2進数で計算
100111

10進法と2進法以外の表記法

プログラミングの世界では2進数の他にも、8進数や16進数もよく使われます。このように10進法や2進法などの表記法を位取り記数法といいます。

8進法

8進法で使われる数字は0,1,2,3,4,5,6,7の8種類です。右から順に80の位、81の位、82の位になります。よって基数は8です。

16進法

16進法で使う数字は0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fの16種類です。アルファベットは小文字のa,b,c,d,e,fを使うこともあります。右から順に160の位、161の位、162の位、163の位になります。基数は16です。

N進法

N進法で使う数字は0,1,2,3…,N-1のN種類です。右から順にN0の位、N1の位、N2の位、になります。基数はNです。

ローマ数字は位取り記数法を使うのか

結論を言うとローマ数字は位取り記数法を使いません。ローマ数字自体、位は意味を持たず、数字自体がその数を表します。そしてゼロが存在しません。

ローマ数字ではI(1),V(5),X(10),L(50),C(100),D(500),M(1000)の数字を使います。そしてローマ数字は並べた数字が表す数を足したものが、全体の数字になります。

例えば2018であるMMXVIIIを10進法で表記すると以下のようになります。

MMXVIII = (M)+(M)+(X)+(V)+(III) = 1000+1000+10+5+3 = 2018

続いて2198であるMMCXCVIIIを10進法で表記すると、

MMCXCVIII = (M)+(M)+(C)+(XC)+(V)+(III) = 1000 + 1000 + 100 + (100-10)+ 5 +3 = 2198


(XC)
のようにCの左側にCよりも小さい数字を置いてC-Xとする計算を「減算の規則」といいます。

数字の歴史~流れ~

  • 古代エジプト人…5進法と10進法が混ざった表記法を用いました。位取り記数法もゼロもありませんでした。数字はパピルスという現代の紙に似ているものを使って表しました。
  • バビロニア人…粘土板に1と10を表す2種類のくさびを用いて59までの数字を表記。記号を書く位置で60の位を表現しました。10進法と60進法が混在した位取り記数法の誕生。1h=60分、1分=60秒…バビロニアの60進法の名残り。
  • ギリシャ人数字を実用的なモノ以外に、哲学的な真理が表現されていると考えた。数を図形・宇宙・音楽に関連付けをしていた。 
  • マヤ人数を数えるときにゼロを起点にしていた。20進法を用いていた。
  • ローマ人5進法と10進法が混ざったローマ数字を用いた。5つのまとまり…V、10のまとまりは…X。L=50、C=100、D=500、M=1000で表記。まだこのときには「減算の規則」は使われていませんでした。
  • インド人バビロニアから伝わった位取り記数法を取り入れる。ゼロも数字と認識する。10進法を採用(0,1,2,3,4,5,6,7,8,9)。現代ではアラビア数字と言われるもの。

まとめ

  • 10進法とは、私たち人間が普段つかう表記法。使う数字は0,1,2,3,4,5,6,7,8,9。
  • 2進法はコンピュータが数字をあつかうときに使う。2進数で使う数字は0と1の2種類。
  • 0進法や2進法などの表記法を位取り記数法という。プログラミングの世界では8進法や16進法なども使われることが多い。
  • ローマ数字は位取り記数法を使わない。ローマ数字ではI(1),V(5),X(10),L(50),C(100),D(500),M(1000)の数字を使う。XCはC-Xと計算する(減算の規則)
  • インド人はゼロの概念、10進法採用、位取り記数法を取り入れる。現代のアラビア数字。
スポンサーリンク

この記事が気に入ったら
フォローしよう

最新情報をお届けします

Twitterでフォローしよう

おすすめの記事