進数って なに? どうして いろいろ あるの?

10進数、60進数、2進数…進数は、なぜいろいろあるのか

位取り記数法(N進法)── 10・12・60・2・16進法の由来と、変換のしかた

分野:技術

10ずつ 数える 10進数の ほかに、時間には 12や 60が、コンピューターには 2が でて きます。どうして いろいろ あるのでしょう。

このメモでは、進数って なにか、どうして つかい わけるのかを、しらべた ことから 見て いきます。

私たちは、10になると次の位に進む「10進数」で数えています。でも、時計には12や60が出てきますし、コンピュータの中は2進数です。数の数え方は、なぜいろいろあるのでしょうか。

このメモでは、進数とは何か、どう使い分けられているのか、進数どうしは変換できるのかを、公開されている資料で確かめます。

位取り記数法では、基数(底)Nを決めると、Nになるたびに次の桁へ進みます。10進法、60進法、2進法、16進法は、基数がちがうだけで、同じ位取りのしくみです。どれを使うかは、扱いやすさで決まっています。

このメモでは、位取り記数法の定義、60進法と12進法の由来、2進法と16進法がコンピュータで使われる理由、変換の方法、マヤの20進法までを、解説記事や歴史の資料で確かめます。資料によって食いちがうことは、そう書きます。

読み方を切り替えられます。画面の上にある「よみかた」のボタンで、小学校低学年むけ小学校高学年むけ中学生むけの3つの書き方に切り替わります。むずかしいと思ったら、いつでもやさしい方に戻ってください。選んだ読み方はブラウザが覚えているので、次に別の記事を開いたときも同じ読み方で始まります。

1. 「進数」って、なに?

1. 進数とは、どこで次の位に進むかの決まり

1. 位取り記数法と基数 ── 10進法の場合

10進数は、10に なると、となりの 「くらい」に すすむ 数え方です。9の つぎは、「10」ですね。

たとえば、10こ たまったら ふくろに 入れて、ふくろの 数を かぞえる、と 考えて みましょう。ふくろが 10こ たまったら、もっと 大きな ふくろに 入れます。これが、くらいが あがる、と いう ことです。

ただし ほんとうは、ふくろに 入れる 数は 10とは かぎりません。2こで 入れる 数え方が 2進数、60こで 入れる 数え方が 60進数です。

10で位が上がる

「10進数」は、0〜9の10個の数字を使い、10になると次の位に進む数え方です。たとえば365は、100が3つ、10が6つ、1が5つで、3×100+6×10+5×1です。

「N進数」とは

位が上がる数をNにした数え方を、「N進数」といいます。このNを「基数」(または「底」)といいます。N進数では、0からN−1までの数字を使い、Nになると次の位に進みます[1]

たとえば2進数なら、数字は0と1だけで、2になると位が上がります。2進数の「10」は、10進数の2のことです。

では、10進数のほかに、どんな進数が使われているのでしょうか。

位取り記数法では、数Nを「基数(きすう)」ないし「底(てい)」といい、N種類の数字を使って数を表します。一桁にひとつの数字を入れて、必要な桁数分を並べます。数字は、0からN−1までの整数に対応し、Nになると次の桁へ進みます[1]

10進法では、アラビア数字の0〜9の10個を使います。たとえば365は、3×10²+6×10+5×1です。同じ位取りのしくみで、基数だけを変えたものが、2進法(0と1)、16進法(0〜9とA〜F。AからFが10から15を表す)、60進法などです[1]

つまり、進数のちがいは、数の「大きさ」のちがいではなく、同じ数を書き表すときの「位の上がり方」のちがいです。では、どんな進数が、どこで使われているのでしょうか。

2. 時間は、なぜ 12や 60が 出て くるの?

2. 60進数と12進数 ── 割り切れる数が便利だった

2. 60進法(バビロニア)と12進法 ── 約数の多さと、暦

時計の 「分」と「びょう」は、60に なると 1つ 上の くらいに すすみます。これは 60進数です。

60は、1から 6まで、ぜんぶの 数で わりきれます。わりきれる 数が 多いと、分けやすいので、べんりだったのかも しれません。ただし ほんとうの わけは、はっきり しません。

ダース(12こ)や、時計の 12時間、1年の 12か月にも、12が 出て きます。つごうの よい 数が、いまも つかい わけられて います。12も、2、3、4、6で わりきれる 数です。

60進数は、古代バビロニアから

時計の「分」と「秒」は、60になると位が上がる60進数です[1]。60進数の考え方は、古代メソポタミアのバビロニアの人たちが使った位取りの数え方にさかのぼるとされます。2種類の楔形の記号を組み合わせて、1〜59を書き表しました[2]

60が選ばれた理由には、いくつかの説があります。60は2、3、5で割り切れるので、分数を有限の形で表せる場面が多かった、という説明があります。ほかに、指で数える方法から、12進法と5進法を使う2つの文化が混ざったため、天文や図形の考え方から、といった説もあり、決着していません[2]

いまも、時間(60秒、60分)と、角度(1周は360度)に、60進数が残っています[2]

12進数は、1年の月の数から?

12は、1と12のほかに2、3、4、6で割り切れるので、3等分にも4等分にもしやすい数です。ダース(12個)、グロス(144個)、時計の文字盤の12(半日)、1年の12か月、1フィート=12インチ、干支の12支など、身近なところに使われています[3]

起源には諸説があり、1年に満月と新月がほぼ12回あることや、メソポタミアの暦との関係で説明されることがあります[3]

このように、割り切れる数が多いなど、使いやすい数が、時計や暦などの用途で残り、いまも使い分けられています。では、コンピュータが使う2進数は、どうして選ばれたのでしょうか。

時刻や角度の単位の「分」や「秒」には、1から6までの数をすべて約数にもつ60を基数とする60進法が使われています[1]。セント・アンドルーズ大学のMacTutor(数学史のサイト)によると、60進法はバビロニア人がシュメール人やアッカド人から受けついだもので、位取りの表記を発展させた「最大の業績」だとされます。60種類の記号は要らず、楔形の2つの記号(1を表すものと10を表すもの)を組み合わせて、1つの位の59通りを表しました[2]

このバビロニアの位取りには、はじめ、空位を表すゼロの記号がなく、1と60が区別できなかったといいます。前後の文脈で判断していて、のちのバビロニア人は、空位を示す記号を作りました。60が2・3・5で割り切れるため、10進法より多くの分数を有限の形で表せることが、60進法が採られた一因だという見方もありますが、議論があります。ほかに、指で数える方法から、12進法と5進法の文化の混合から、天文学や図形の考え方から、という提案があり、MacTutorの執筆者は、一つの見方として、意図的な選択というより、数え方の習慣のなかから自然に生まれたのだろう、と述べています[2]。60進法は、いまも時間(60秒・60分)と角度(360度)に残っています[2]

12進法は、12を基数とする位取り記数法で、0〜9に加えて、10と11を表す2つの数字が要ります。12には、1とその数以外に2、3、4、6の4つの約数があり、3等分と4等分がしやすいことが利点だとされます。身近な例は、ダース(12)とグロス(144)、1年の12か月、1フィート=12インチ、かつてのイギリスの通貨の12ペンス=1シリング、干支の12支などです[3]。起源には諸説があり、1年にほぼ12回ある満月と新月や、メソポタミアの暦との関係で説明されることがあります[3]

なお、時計の文字盤の12(半日の時間数)と、分・秒の60は、別の由来をもつ数え方です。このように、割り切れる数が多いなど使いやすい数が、時計や暦などの用途で残り、いまも使い分けられています。では、コンピュータがなぜ2進法を使うのかを見ます。

3. コンピューターは、どうして 2進数?

3. 2進数は、電気の「入・切」と相性がいい

3. 2進法とデジタル回路 ── ライプニッツ、シャノン、ビットとバイト

2進数は、0と 1だけで 数を あらわします。コンピューターの 中の でんきの 回路は、「でんきが 高い」か「ひくい」かの 2つの じょうたいを つかうので、0と 1が ぴったり なのです。

0か 1かを あらわす ひとつぶんを「ビット」と いいます。ビットを 8こ あわせた ものが「バイト」です。

スイッチが 入って いるのが 1、切れて いるのが 0、と 考えると わかりやすいです。ただし ほんとうの コンピューターの スイッチは、とても 小さな 部品で、目に 見えません。

でも、2進数は 0と 1が ながく つづくので、人には よみにくいのです。たとえば、192は 11000000と、8けたに なります。どう すれば よみやすく なるでしょう。

二つの状態だけを使う

コンピュータのデジタル回路は、物理的な状態を「電圧が高いか低いか」のような2つの状態だけに絞って扱います。だから、0と1だけの2進数がぴったり合います[4]

2進数の1桁を「ビット」、8ビットを「バイト」といいます[4]。10進数の192は、2進数では11000000です[4]

2進数の歴史

2進数のような考え方は、古くからありました。紀元前200年ごろのインドのピンガラが考えた、詩のリズムを数で表す方法は、現在知られている最古の2進法の記述の一つとされます。中国の易経の八卦(3ビットに相当)や六十四卦(6ビットに相当)も、あとから2進法の並びとして見られることがあります[4]

17世紀に、数学者のライプニッツが、0と1だけで数を表す2進法をまとめ、易経の八卦に000〜111を対応させたとされます[4]。1937年には、クロード・シャノンが、リレーのようなスイッチの回路が、ブール代数で設計できることを示しました。これがコンピュータの理論の土台になりました[4]

0.1が2進数で割り切れない

面白いことに、10進数の0.1は、2進数では0.0001100110011…と、同じ並びがずっと続く小数になります[4]

2進数には、192が11000000になるように、桁が長くなりがちで、人間には読みまちがえやすい、という弱点もあります。この長い並びを、どうすれば読みやすくできるでしょうか。

2進法は、底を2とする位取り記数法で、0と1だけで数を表し、位の値は2のべき乗(…1/4、1/2、1、2、4…)です。デジタル回路では、物理現象を「電圧の高低」「磁極のNとS」のような二状態に縮退させて扱うため、0と1で表す2進法が最適です[4]。2進数の1桁がビット、8ビットがバイトです[4]

歴史的には、インドのピンガラ(紀元前200年ごろ)が詩のリズムを数学的に表す方法を考えたものが、現在知られている最古の2進法の記述の一つとされます。中国の易経の八卦(3ビット相当)と六十四卦(6ビット相当)も、あとの時代に2進法の並びとして解釈されることがあります。日本語版Wikipediaの説明では、17世紀にライプニッツが、数学的に2進法を確立して「Explication de l'Arithmétique Binaire」(2進算術の解説)を発表し、易経の八卦に000〜111を対応させました[4]。年号や細部は、このメモでは原典にあたっていません。

コンピュータの理論との結びつきとして、1937年のクロード・シャノンの論文が、リレーのようなスイッチング素子を使った回路の設計が、ブール代数で行えることを示したとされます[4]

2進法で困ることの例が、小数です。10進数の0.1は、2進数では0.0001100110011…の循環小数になります[4]。人間にとって「切りのよい数」でも、基数が変わると割り切れなくなります。また、192が11000000になるように、2進数は桁が長くなりがちで、人間には読みまちがえやすくなります。この長い並びを、どうすれば読みやすくできるのでしょうか。次の章で見ていきます。

4. 16進数は、なにに つかうの?

4. 16進数は、2進数を短く書くための道具

4. 16進法 ── 2進数4桁を1桁に、色の指定とメモリの番地

ながい 2進数は、4けたずつ に 区切ると、よみやすく なります。11000000は、1100と 0000です。

4けたの 0と 1の ならべかたは、0000から 1111まで、ぜんぶで 16とおり あります。この 16とおりを ひとつずつの もじで あらわす のが、16進数です。

16進数は、0から 9までの 数字に、Aから Fまでの もじを たして、16こ つかいます。Aは 10、Fは 15です。1100は C、0000は 0なので、11000000は 「C0」と 書けます。

ホームページの 色を きめる 「#FF0000」のような ことばにも、16進数が つかわれて います。

2進数の4桁が、16進数の1桁

長い2進数は、4桁ずつに区切ると読みやすくなります。11000000は、1100と0000です。4桁の0と1の並びは、0000から1111まで、全部で16通り(2×2×2×2)あります。この16通りを1文字ずつで表せば、8桁の2進数が2文字に縮みます。そのために必要な16個の数字が、16進数です。たとえば1100はC(12)、0000は0なので、11000000は「C0」と書けます。

16進数は、0〜9に、A〜F(10〜15)を加えた16個の数字を使います。2進数の4桁が16進数の1桁に対応するので、2進数より短く表せます。1バイト(8ビット)は、16進数の2桁で書けます[5]

どこで使われているか

ウェブページの色は、「#RRGGBB」という形で、赤・緑・青の強さを16進数で指定します[5]。「FF」は10進数の255で、1バイトで表せる最大の値です。「#FF0000」は、赤の強さが最大で、緑と青がゼロの色、つまり赤です。

コンピュータのメモリの内容を表示するときにも、16進数が使われます[5]。プログラミングでは、0x1000のように、数字の前に「0x」を付けるなど、言語によって書き方がちがいます[5]

では、進数どうしは、どうやって変換するのでしょうか。

長い2進数は、4桁ずつに区切ると読みやすくなります。4桁の0と1の並びは、0000から1111まで16通り(2⁴)あるので、その16通りを1つずつの数字で表す位取り、つまり基数16の16進法が使われます。たとえば11000000は、1100(C)と0000(0)に分けて「C0」と書けます。

16進法は、0〜9に加えて、A〜F(10〜15)を数字として使います。2進表記の4桁が16進表記の1桁で表せるので、2進表記より短く書けます。1バイト(8ビット)は、16進の2桁で表示できます[5]

実用例は、ウェブの色指定(#RRGGBB)や、メモリの内容(アドレス)の表示です。書き方は、C・Java・Perlでは0x1000、MicrosoftのBASICでは&h1000、Pascalでは$1000、アセンブリでは1000hと、言語や処理系ごとにちがいます[5]

歴史的には、1950〜1960年代の初期のコンピュータで、各社が異なる記号(u〜z、K〜Lなど)を使っていました。1968年にBruce Alan Martinが新しい数字記号を提案しましたが、賛同者は少なかった、とされます[5]。hexadecimalという言葉の最初の記録は、1954年のMerriam-Webster's Collegiate Dictionaryに見られるとされます(辞書の本文では確かめていません)[5]

では、10進数・2進数・16進数は、どうやって書きかえるのでしょうか。

5. 進数は、かえられるの?

5. 変換のしかた ── 割り算と、4桁ずつのまとめ

5. 進数の変換 ── 10進⇔2進⇔16進

はい、かえられます。おなじ 数を、べつの 進数で 書くだけです。

やってみよう

ゆびを 立てて いるのを 1、おって いるのを 0、と します。右手の 5本の ゆびで、0から 31まで かぞえられます。おやゆびは 1、ひとさしゆびは 2、なかゆびは 4、くすりゆびは 8、こゆびは 16と、ばいに して いきます。たとえば、ぜんぶの ゆびを 立てると、ぜんぶ たして 31、おやゆびだけ 立てると 1です。

ただし ほんとうの コンピューターは、ゆびでは なく、でんきの スイッチで 0と 1を あらわして います。

10進数から2進数へ

10進数を2で割っていき、余りを記録して、最後に余りを逆の順に読みます。たとえば13なら、13÷2=6余り1、6÷2=3余り0、3÷2=1余り1、1÷2=0余り1。余りを逆に読むと、1101です[1]

2進数から10進数へ

2進数の各桁に、その位の値(1、2、4、8…)をかけて足します。1101なら、8+4+0+1=13です[1]

2進数と16進数

2進数を4桁ずつに区切ると、そのまま16進数の1桁になります。11000000は、1100と0000に分けて、C(12)と0で、16進数のC0です。これは10進数の192です[5]。10進数の36864は、16進数では9000です[5]

では、これ以外に、どんな進数があったのでしょうか。

10進数から2進数への変換は、2で割り続け、余りを記録する方法で行います。2進数から10進数への変換は、各桁に対応する2のべき乗を掛けて合計します[1]。たとえば10進数の13は、13÷2=6余り1、6÷2=3余り0、3÷2=1余り1、1÷2=0余り1で、余りを逆順に並べた1101です。逆に、1101は8+4+0+1=13です。

10進数の192は、2進数で11000000です[4]。2進数の4桁が16進数の1桁に対応するので、1100(12=C)と0000(0)に分けて、16進数ではC0です[5]。10進数の36864は、16進数で9000です[5]

変換の途中で、割り切れない小数(10進数の0.1が2進数で循環小数になる例)が出てくることがあります[4]。この扱いは、このメモでは調べていません。では、これ以外の進数は、どこで使われていたのでしょうか。

6. ほかにも、いろいろな 進数が あったの?

6. マヤの20進数と、位取りの始まり

6. マヤの20進法と、位取り記数法・ゼロの起源をめぐる資料の食いちがい

くらいが あがる 数は、国や 時代に よって ちがいました。むかしの マヤの 人たちは、20に なると くらいが あがる 20進数を つかって いました。点が 1、たてぼうが 5、貝の かたちが 0です。

「0」を つかった くらいどりの 数え方は、いつ、どこで はじまったのかは、しりょうに よって ちがって いて、はっきり しません。

位が上がる数(基数)は、地域や文化によってちがっていました。ここでは、マヤの20進数と、位取りの始まりを見ます。

マヤは20進数

古代マヤの人たちは、点を1、棒を5、貝の形を0として、下から上へ、20ずつ位が上がる20進数を使いました。たとえば33は、「20が1つ、1が13」で、点1つの下に、棒2本と点3つを並べて書きます[6]

暦を数えるときは、2番目の位は17までで、3番目の位は20×20=400ではなく、18×20=360を表すように、少し変えて使いました。1年の長さに近づけるためだと説明されます[6]

位取りとゼロは、どこで始まった?

日本語版Wikipediaは、位取り記数法は古代中国に由来し、紀元前14世紀の商の時代に10進法が使われ、紀元前4世紀にはゼロを空位として書く位取りがあった、と書いています[1]。ヨーロッパで最も古い10進法の文書は、976年のスペインの写本です[1]

いっぽう、ゼロを最初に発明したのがマヤなのか、それより前にこの数え方を使っていたオルメカ文明なのかは、研究者の間で議論があります[6]。最初のゼロや位取りが、どこで生まれたのかは、資料によって説明がちがい、このメモでは決められません。

位が上がる数(基数)は、地域や文化によってちがいました。マヤの数は、20を基数とする位取りの20進法で、点(1)、棒(5)、貝(0)の3つの記号を使い、下から上へ20のべきの位を並べました。たとえば33は、(1×20)+13で、点1つの下に、棒2本と点3つを重ねて書きます[6]

暦の長期計算(ロング・カウント)では、2番目の位は17までしか使わず、3番目の位の値は20×20=400ではなく18×20=360になる、修正された20進法が使われました。これは、太陽年の近似に合わせたものと説明されます。最も古い長期暦の日付は、紀元前36年のチアパスの石碑に見られます。ただし、この日付がマヤ圏の外で見つかっていることから、ゼロと20進法を発明したのがマヤなのかオルメカなのかは、研究者の間で議論があります[6]

位取り記数法の起源について、日本語版Wikipediaは、古代中国に由来し、中国では紀元前14世紀の商時代にすでに10進法が使われ、紀元前4世紀にはゼロを空位として書く位取り記数法があったと書きます。ヨーロッパで最古の10進法の文書は、976年のスペインの手稿本だとされます[1]。一方、バビロニアの60進法にも、位取りとゼロに近い記号の工夫があります[2]。このように、「位取りとゼロがどこで生まれたか」は、資料によって説明がちがい、このメモは、どれかに決めません。

じぶんでも やって みる

自分でも調べてみたくなったら

自分でも調べてみたくなったら

じぶんの たんじょうびや 年れいを、2進数に かえて みましょう。

あんぜんな ばしょで できる こと

  • ゆびで 2進数を かぞえる。右手の 5本の ゆびで、0から 31まで かぞえて みましょう。
メモの すすめ

きょう 知った ことを ひとつ だけ ノートに 書いて おきましょう。「2進数は 0と 1だけ」だけでも いいです。

このメモの内容は、自分で計算して確かめられます。

今日できること

  • 自分の年齢を、2進数に直してみる。2で割って、余りを逆に読むだけです。答えは、2×の位の足し算で、もとの数に戻せます。
  • ウェブページの色を、16進数で読んでみる。「#FF0000」が赤になる理由を、「FFは255」を手がかりに、説明してみましょう[5]
メモのすすめ

気になった言葉を1つだけ書いておくと、あとで調べる入口になります。「基数」や「ビット」だけでも十分です。

このメモは、解説記事(日本語版・英語版Wikipedia)にたよる部分が多く、原資料にあたっていません。原資料にあたる入口にしてください。

手を動かして確かめる

  • 0.1を2進数で書いてみる。0.1に2を掛けて、整数部分を取り出す操作をくり返すと、0.0001100110011…と、同じ並びが続く理由を確かめられます[4]
  • ライプニッツの論文「2進算術の解説」を探す。易経との関係がどう書かれているかを、原典やその翻訳・解説で確かめましょう。発表の年も、原典で確認できます。
  • MacTutorのバビロニアの数の解説を読む。楔形の記号の図と、60進法が選ばれた理由の諸説が載っています[2]
メモのすすめ

気になった数字や言葉を1つだけノートに記録しておきましょう。「1101=13」という一文でもかまいません。

しらべた もとの じょうほう

参考にした情報源

参考にした情報源と、その使い方

この記事は、下にあげた公開情報をもとに書いています。文章や図を無断で転載してはいません。もっと正確に知りたいときは、必ず下の出典にあたってください。リンク先の内容や、リンク先で起きたことについて、当サイトは責任を負いません。

出典について:数学史のサイト(セント・アンドルーズ大学 MacTutor)と、日本語版・英語版Wikipediaにたよっています。公的機関や学術論文の原資料は、確かめられていません。位取りの起源や、ライプニッツの論文の年号などは、原典にあたっていません。英語の資料は、内容を日本語で説明しています。このメモは、これらの団体のものではなく、個人のまとめです。

  1. 日本語版Wikipedia「位取り記数法」。 https://ja.wikipedia.org/wiki/位取り記数法 (基数・位取りの定義、進法の種類、変換の方法、位取りの歴史)
  2. MacTutor History of Mathematics「Babylonian numerals」(セント・アンドルーズ大学)。 https://mathshistory.st-andrews.ac.uk/HistTopics/Babylonian_numerals/ (バビロニアの60進法の記号と、60が選ばれた理由の諸説。英語の資料)
  3. 日本語版Wikipedia「十二進法」。 https://ja.wikipedia.org/wiki/十二進法 (12進法が便利な理由、身近な例、起源の説明)
  4. 日本語版Wikipedia「二進法」。 https://ja.wikipedia.org/wiki/二進法 (2進法の歴史、デジタル回路で使われる理由、ビットとバイト、変換の例)
  5. 日本語版Wikipedia「十六進法」。 https://ja.wikipedia.org/wiki/十六進法 (16進法の定義、色の指定とメモリの表示、書き方の例、歴史)
  6. Wikipedia(英語版)「Maya numerals」。 https://en.wikipedia.org/wiki/Maya_numerals (マヤの20進法と暦の修正、ゼロの起源をめぐる議論。英語の資料)

なおした ところ

更新履歴

更新履歴(改版の記録)

  •  初版を公開。

このサイトでは、公開した記事の本文は原則として書き直しません。誤りが見つかったときや、内容が古くなったときだけ手を入れ、その理由をこの欄に残します。

このサイトは、ほんの入り口です

メモできる量や正確性には、限界があります。もし、少しでも気になったことがあったら、ぜひ、専門の書籍・動画・施設・人に手を伸ばしてみてください。もっともっとワクワクすることに出会えると思います。