メインメニューを開く

位取り記数法

位取り記数法(くらいどりきすうほう)、もしくは「N 進法」とはの表現方法の一種で、予め定められたN 種類の記号(数字)を列べることによって数を表す方法である。(位取りのことをともいう。)

今日の日本において通常使われているのは、 N が十のケースである十進法であるが、コンピューターでは二進法八進法十六進法なども用いられる。また歴史的には、十進法が世界的に広まったのはフランス革命の革命政府メートル法とともに十進法を定めて以来であり、それ以前は国や分野により、様々な N に対する N 進法が用いられていた。

本項ではN が自然数の場合を扱う。それ以外の場合については広義の記数法の記事を参照のこと。また 後述するp進数の概念とは(関連があるものの)別概念であるので注意が必要である。

目次

概要編集

位取り記数法では、一つの列に N 個の数字と呼ばれる記号で数を表現し、一つの列に N 個の数字を容れて、N に達したら数列を一つ増やす。数字を容れる一つの列を(けた)といい、桁の意味する数を(くらい)という。このN個の中には、必ずを意味する数字が含まれ、桁の基数 N は「10」というように「整数第二位が"一"で整数第一位が"零"」として表記される。この「N進」と呼ばれる数列は、「Nの数」(Nの倍加)ではなく、「Nの数」(Nの冪乗)で進む。即ち、ここでの「進」とは「桁」を進めることである。

従って、整数第一位(N0)を「の位」、整数第二位(N1)を「Nの位」、整数第三位(N2)を「N2の位」、小数第一位(N-1、1÷N1)を「N分の一の位」、小数第二位(N-2、1÷N2)を「N2分の一の位」として数を表現する。

単位系でも、「N進法」では必ず何かの冪乗を意味する単位が設定される。

関連語編集

  • 「進」は「倍」ではない
「時間は十二法や六十法」「時間は十二数や六数」というように、"倍"数と"進"法や、"倍"数と"進"数を混同している例が見られるが、十二"進"数なら「50は六十」「0.5は十二分の五」であらねばならず、六"進"数なら「50は三十」「0.5は六分の五」であらねばならない。
しかし、十二進法では二十四は20(十二の冪数ではない)であって百四十四が100(十二の冪数)であり、その上に数字が十二"進"数ではなく十"進"数で表記されたりしており、必ずしも桁や単位が「十二→百四十四→千七百二十八」や「六→三十六→二百十六」などの冪数で繰り上がっているとは限らない(→後で詳述)。
  • 「進法」「進数」「進制」
「N進"法"」は冪乗で進める方法、「N進"数"」はNの冪乗で進む、「N進"制"」はNの冪乗で進める制度というように使い分ける例が一般的である。
  • 用例:六進の100は、十進では36である。
  • 用例:十二進の6A.6は、二十進の42.Aと同値である。
  • 用例:貨幣を十進にする。

底を「10」として表さない例編集

アラビア数字マヤ数字のように、桁の底を「10」として表す例もあるが;絵文字や図形記号のように、桁の底を「10」ではなく新しい記号として表す例でも、N進法は適用される。

例えば、十二進法を図形記号を用いて説明する。便宜上、数字は十進表記を用い、十二進表記は下付き括弧の12で示し、▲を12(1012)、●を1とする。

  • 9(912) … ●●● ●●● ●●●
  • 10(A12)… ●●● ●●● ●●● ●
  • 11(B12) … ●●● ●●● ●●● ●●
  • 12(1012)… ▲
  • 24(20)… ▲▲
  • 36(3012)… ▲▲▲
  • 60(5012)… ▲▲▲ ▲▲
  • 90(7612)… ▲▲▲ ▲▲▲ ▲ ●●● ●●●
  • 108(9012)… ▲▲▲ ▲▲▲ ▲▲▲
  • 120(A012)… ▲▲▲ ▲▲▲ ▲▲▲ ▲
  • 132(B012)… ▲▲▲ ▲▲▲ ▲▲▲ ▲▲
  • 143(BB12)… ▲▲▲ ▲▲▲ ▲▲▲ ▲▲ ●●● ●●● ●●● ●●
  • 144(10012)… ◆
  • 145(10112)… ◆ ●
  • 288(20012)… ◆◆
  • 432(30012)… ◆◆◆
  • 540(39012)… ◆◆◆ ▲▲▲ ▲▲▲ ▲▲▲
  • 1296(90012)… ◆◆◆ ◆◆◆ ◆◆◆
  • 1440(A0012)… ◆◆◆ ◆◆◆ ◆◆◆ ◆
  • 1584(B0012)… ◆◆◆ ◆◆◆ ◆◆◆ ◆◆
  • 1600(B1412)… ◆◆◆ ◆◆◆ ◆◆◆ ◆◆ ▲ ●●● ●
  • 1716(BB012)… ◆◆◆ ◆◆◆ ◆◆◆ ◆◆ ▲▲▲ ▲▲▲ ▲▲▲ ▲▲
  • 1727(BBB12)… ◆◆◆ ◆◆◆ ◆◆◆ ◆◆ ▲▲▲ ▲▲▲ ▲▲▲ ▲▲ ●●● ●●● ●●● ●●
  • 1728(100012)… ◎
  • 1729(100112)… ◎ ●
  • 3456(200012)… ◎◎
  • 5184(300012)… ◎◎◎
  • 5500(322412)… ◎◎◎ ◆◆ ▲▲ ●●● ●

ここで重要な点は、「どの数で新しい記号が現れるか」である。十二進法は、24や60といった「▲の倍数を、桁や単位にすること」(=12の2倍、12の5倍)でもなく、288や432といった「◆の倍数を、桁や単位にすること」(=12の12倍の2倍、12の12倍の3倍)でもなく、144や1728といった「◆や◎などの新しい記号が現れる数を、桁や単位にすること」(=12の12倍、12の12倍の12倍)なのである。

適用例編集

十進法編集

今日の日本において最も身近な十進法を例に説明する。十進法では、個の数字と呼ばれる記号を用い、一桁に十個の数字を容れて、十倍毎に桁を増やす。数列は、十、二十三十といった「十の数」ではなく、十、といった「十の数」で進む。

アラビア数字なら

0123456789

の十個であり、 漢数字なら

の十個である[1]。以下、アラビア数字を例に説明するが、漢数字の場合も同様である。

十進法ではこれらの数字を列べる事で数を表現する。 例えば、253.48は、

 

を表す。

また十進法では、以下の性質が満たされる。

  • 整数では、十倍する毎に一桁増える。
  • 整数では、十分割する毎に一桁減る。
  • 一桁で表せる数は10-1=9までで、10以降は二桁以上を必要し、100以降は三桁以上を必要とする。
  • 小数では、十分割する毎に一桁増える。
  • 小数では、十倍する毎に一桁減る。

N 進法は、以上の十進法の説明を自然に N の場合に拡張する事で得られる。

Nが十未満編集

例えば四進法をアラビア数字で表した場合、使う数字は

0123

の四種類の記号であり、四進法における312.02は、

 

を表し、これは十進法の54.125にあたる。

また四進法では、十進法に類似した以下の性質が満たされる。

  • 整数では、四倍する毎に一桁増える。
  • 整数では、四分割する毎に一桁減る。
  • 一桁で表せる数は4-1=3までで、4以降は二桁以上を必要とし、16以降は三桁以上を必要とする。
  • 小数では、四分割する毎に一桁増える。
  • 小数では、四倍する毎に一桁減る。

以上の話でも分かるように、同じ「312.02」でも四進法のものと十進法のものでは値が異なる。このため、位取り記数法の話をするときには、常に何進法の話であるのかを明示する必要がある。

Nが十を超過編集

十二進法十六進法二十進法のように、N が十より大きい場合は用いる数字は、アラビア数字だけでは足りなくなる。そこで十以上の数を表記する「数字」として、ラテン文字アルファベット大文字を用いる事が多い。

例えば十六進法であれば、「数字」として

0123456789ABCDEF

を用い、ABCDEFはそれぞれ十進法の自然数10、11、12、13、14、15を表す。

従って例えば2F3.A7

 

を表し、これは十進法の755.652344にあたる。

各進法への置換例編集

ここでは必要に応じて、十進法以外のN進法の表記を、下付きでPN と表記する(Pは冪乗を意味する"Power"の頭文字)。進法の底の特徴として、二と十六は「二の冪数」、三は「奇数」、六と十は「奇数の二倍」、十二と二十は「奇数の四倍」が挙げられる。

各進法での表記
二進表記 三進表記 六進表記 十進表記 十二進表記 十六進表記 二十進表記
1 1 1 1 1 1 1
10 2 2 2 2 2 2
11 10 3 3 3 3 3
100 11 4 4 4 4 4
101 12 5 5 5 5 5
110 20 10 6 6 6 6
111 21 11 7 7 7 7
1000 22 12 8 8 8 8
1001 100 13 9 9 9 9
1010 101 14 10 A A A
1011 102 15 11 B B B
1100 110 20 12 10 C C
1111 120 23 15 13 F F
10000 121 24 16 14 10 G
10010 200 30 18 16 12 I
10100 202 32 20 18 14 10
100100 1100 100 36 30 24 1G
111100 2020 140 60 50 3C 30
1011010 10100 230 90 76 5A 4A
1100100 10201 244 100 84 64 50
10000100 11220 340 132 B0 84 6C
10010000 12100 400 144 100 90 74
100000000 100111 1104 256 194 100 CG
101101000 111100 1400 360 260 168 I0
110010000 112211 1504 400 294 190 100
各進法での負の整数
二進表記 三進表記 六進表記 十進表記 十二進表記
−110 −20 −10 −6 −6
−101 −12 −5 −5 −5
−100 −11 −4 −4 −4
−11 −10 −3 −3 −3
−10 −2 −2 −2 −2
−1 −1 −1 −1 −1
0 0 0 0 0
各進法の小数と除算
進法 六進表記 十進表記 十二進表記 十六進表記 二十進表記
1 ÷ 2 0.3 0.5 0.6 0.8 0.A
1 ÷ 3 0.2 0.333 0.4 0.555 0.6D6D
1 ÷ 4 0.13 0.25 0.3 0.4 0.5
1 ÷ 5 0.111 0.2 0.2497 0.333 0.4
1 ÷ 6 0.1
(1÷106
0.1666 0.2 0.2AAA 0.36D6D
1 ÷ 7 0.0505
(1÷116
0.142857 0.186A35 0.249 0.2H2H
1 ÷ 8 0.043
(1÷126
0.125 0.16 0.2 0.2A
1 ÷ 9 0.04
(1÷136
0.111 0.14 0.1C7 0.248HFB
1 ÷ 10 0.0333
(1÷146
0.1 0.12497
(1÷A12
0.1999
(1÷A16
0.2
(1÷A20

※ 割り切れない小数の循環節は下線で示す。

基数の明記編集

同じ「312.02」でも四進法のものと十進法のものでは値が異なる。そこで四進法であることを明記するため

312.024

もしくは

(312.02)4

と書き表す事もある。

コンピューターで特に重要性の高い二進数、八進数、十進数、十六進数には固有の表記もある(ただしコンピューター言語により表記方法が若干違う場合もある):

  • 0b101 : (101)2の意味
  • 0o306 : (306)8の意味
  • 0d248 : (248)10の意味
  • 0xF4C : (F4C)16の意味

厳密な定義編集

以下話を簡単にする為、非負の有限小数の場合のみを扱うが、無限小数の場合も同様である。

なお以下、「数字」という言葉を通常よりかなり広範な意味に用いており、アラビア数字、漢数字、マヤ数字、英語のアルファベットなどを含めた任意の記号を指している事に注意されたい。

自然数 N を一つ固定する。( N をこの記数法の(てい)または基数という)。

さらに N 個の記号 を固定する。(例えばアラビア数字とアルファベットで十六進法を表す場合は、N =16 で、 )。

さらに各  に対し、

 

と定義する。

このとき、記号 を数字として用いた N 進法とは、自然数 nm を用いた

 

という形に表記( N 進表記、もしくは N 進数表記)に非負の実数

 

を対応させる表記体系の事である。

N 進表記された数という意味で「N 進数」という呼称を使用することもある。

N 進数表記の先頭に「+」もしくは「-」の符号をつけることで、数の正負を表現することもできる。

符号をつけた場合の N 進数表記の詳細な説明は省略する。

表記の一意性に関して編集

この節では特に断りがない限り十進数について述べるが、他の基数についても同様である。

実数の N 進表記は一意ではない。よく知られているように、

1=1.000…=0.999

である。また、以下のように、上位桁に不要な0を付け加えることもできる

0013=13

通常は「0013」のような表記は許さないとする事が多いが、コンピューターなどでは、最大で4桁の整数値であることを示すため、あえて「0013」のような表記をする場合がある。

以上のような例をのぞくと0以外の実数は一意に表現できる。

しかし0のみは

+0」、「-0

の二通りの表記が可能である(いわゆる負のゼロの問題)。 これが原因で、コンピューター・プログラムでは0のみ例外処理を求められる場合がある。

底の変換アルゴリズム編集

与えられた非負整数 T を、記号 を数字として用いた N 進表記

 

で表すには、以下のアルゴリズムを用いればよい。

なお、このアルゴリズムは、 MNによりM 進表記されている TN 進表記に書き換えるときに使われる事が多いので、このアルゴリズムを底の変換アルゴリズムと呼ぶ。

  • 入力T を受け取る。
  • T=0 なら  を出力して停止。
  • iを0に初期化
  • while(T≠0){
    • TN で割った商を T' 、余りを k とし、   とする。
    • TT'、i←i+1
  • }
  • r←i-1
  •  を出力

なお、T >0に対しては等式

 

が知られている(なお、添え字を0から始めているので、T の桁数はr +1) 。ここで 床関数である。

底の変換例編集

十進法→五進法への変換

十進法の 5213 を五進法に置き換える場合:

  • 5213 ÷ 5 = 1042 余り 3
  • 1042 ÷ 5 = 208 余り 2
  • 208 ÷ 5 = 41 余り 3
  • 41 ÷ 5 = 8 余り 1
  • 8 ÷ 5 = 1 余り 3
  • 1 ÷ 5 = 0 余り 1

から、5213 = 3 + 2 × 5 + 3 × 52 + 1 × 53 + 3 × 54 + 1 × 55 となるので、五進表記では 131323 と表すことができる。また、55 = 3125, 56 = 15625 であるから、55 ≤ 5213 < 56 が成り立っているので、対数を取ると

 

となり、

 

が分かる。

同値の整数への変換

二百七十の表記は、以下の通りになる。(便宜上、計算式を十進法で表記する)

  • 二進法 (100001110)2 : 270 = 256 + 14 = 28 + 23 + 22 + 21
  • 六進法 (1130)6 : 270 = 216 + 54 = 1×63 + 1×62 + 3×61
  • 八進法 (416)8 : 270 = 256 + 14 = 4×82 + 1×81 + 6
  • 十進法 (270)10 : 270 = 200 + 70 = 2×102 + 7×101
  • 十二進法 (1A6)12 : 270 = 144 + 126 = 1×122 + 10×121 + 6
  • 十八進法 (F0)18 : 270 = 270 + 0 = 15×181
  • 二十進法 (DA)20 : 270 = 260 + 10 = 13×201 + 10
意味する数

「234」の意味する数は、以下の通りになる。(便宜上、計算式を十進法で表記する)

  • 六進法 (234)6 : (94)10 = 72 + 18 + 4 = 2×62 + 3×61 + 4
  • 八進法 (234)8 : (156)10 = 128 + 24 + 4 = 2×82 + 3×81 + 4
  • 十進法 (234)10 : (234)10 = 200 + 30 + 4 = 2×102 + 3×101 + 4
  • 十二進法 (234)12 : (328)10 = 288 + 36 + 4 = 2×122 + 3×121 + 4
  • 十八進法 (234)18 : (706)10 = 648 + 54 + 4 = 2×182 + 3×181 + 4
  • 二十進法 (234)20 : (864)10 = 800 + 60 + 4 = 2×202 + 3×201 + 4

「500」の意味する数は、以下の通りになる。(便宜上、計算式を十進法で表記する)

四則計算を含めた変換

上記の通り、十二進法の 500 は七百二十であり、十進法では 720 と表記される。従って、十二進法の"500 ÷ 14 = 39"は、以下のように変換される。

  • 十二進法 : (500)12 ÷ (14)12 = (39)12
  • 十進法に換算 : (720)10 ÷ (16)10 = (45)10
  • 十六進法に換算 : (2D0)16 ÷ (10)16 = (2D)16
  • 十八進法に換算 : (240)18 ÷ (G)18 = (29)18
  • 二十進法に換算 : (1G0)20 ÷ (G)20 = (25)20

“1034 ÷ 11”の商も、以下のようになる。

  • 十進法 (1034)10 ÷ (11)10 = {1×103 + 3×101 + 4} ÷ {1×10 + 1} = (94)10
  • 十二進法 (1034)12 ÷ (11)12 = {1×123 + 3×121 + 4} ÷ {1×12 + 1} = (B4)12
    • 十進法に換算:1768 ÷ 13 = 136
  • 二十進法 (1034)20 ÷ (11)20 = {1×203 + 3×201 + 4} ÷ {1×20 + 1} = (J4)20
    • 十進法に換算:8064 ÷ 21 = 384
同値の小数への変換

十進法の小数 0.625 は、六進法では 0.343 となり、十二進法では 0.76 となり、二十進法では 0.CA となる。いずれも分数に換算すると十進法の 5/8 となる小数であるが、計算式は以下の通りになる。

  • 六進法 (0.343)6 = (343/1000)6 = 3÷61 + 4÷62 + 3÷63 = (135/216)10 = (5/8)10
  • 十進法 (0.625)10 = (625/1000)10 = 6÷101 + 2÷102 + 5÷103 = (625/1000)10 =(5/8)10
  • 十二進法 (0.76)12 = (76/100)12 = 7÷121 + 6÷122 = (90/144)10 = (5/8)10
  • 二十進法 (0.CA)20 = (CA/100)20 = 12÷201 + 10÷202 = (250/400)10 = (5/8)10

複数の基数の混在編集

十進法では、機械的に倍、倍、倍、一万倍…の順で増える。同じく、十二進法では、機械的に十二倍、百四十四倍、千七百二十八倍、二万七百三十六倍…の順で増える。

しかし、十進法に対して、二・五進法(にごしんほう。二十五進法とは別概念)では二と五の二つの基数があるので、桁が上がる度に五倍、二倍、五倍、二倍…と交互になり、「十の冪数」と「十の冪数の五倍」が交互に現れる。これはそろばんと同じ桁上がりルールだが、計算機にも応用されている。

日常生活で用いている数には、このように複数の基数が混在するものが存在する。例えば、時間の単位は、三百六十を全体値として、十二と三十の積になるように設定されている。1世代は30年>1年は12ヶ月>1ヶ月は30日>1日を12分割(十二時辰、十二宮、十二支など)という循環である。これは、二・五進法と同様に名付けるとすれば「十二・三十の単位系」であり、十二進法でも三十進法でもない。
真に時計が「十二進法」ならば、一日は二十四時間(= 十二の二倍)ではなく百四十四時間(= 十二の二)であらねばならない。時計以外の時間も「十二進法」ならば、全ての単位が 1/144世紀=1/12世代=1年=12ヶ月=144日=1728(ある単位)=20736時間 というように機械的に十二の冪乗で変わるように設定されねばならない。そして、桁と記数法と命数法も、十はA、三十は26、六十は50、九十は76、三百六十は260、七百二十は500であらねばならない。同じく、「三十進法」ならば、桁と命数法も三十倍ずつ変わり、九百(三十の二乗)や二万七千(三十の三乗)といった三十の冪乗を意味する単位や命数法が存在せねばならないが、これらがどれも存在していない。
数値観でも、「三百六十を全体値とする、十二・三十の単位系」は、七百二十を「2倍」(=360×2)、百四十四を「2/5」(=360の2/5)か「4と4/5」(30×4 + 24)、九十を「1/4」(=360÷4)か「3倍」(=30×3)、六十を「1/6」(360÷6)か「2倍」(=30×2)と見なす体系である。しかし、十二進法は、七百二十を「5倍」(=5×144)、百四十四を「全体値」、九十を「5/8」(=144の5/8)、六十を「5倍」か「5/12」(=144の5/12)と見なす体系である。
これらの要因から、「十二進法」や「三十進法」という言い方は誤りである。

また、現在は1日が12の2で24時間(←12の2乗たる144時間ではない)で、時刻の単位は1日=24時間、1時間=60分、1分=60秒であるから、これも二・五進法と同様に名付けるとすれば「24・60・60の単位系」である。こちらは三千六百 (=六十の二乗)という六十の冪乗を意味する単位は存在しているが、五百七十六 (=二十四の二乗)など二十四の冪乗を意味する単位や命数法が存在していないため、「二十四進法」という言い方は誤りである。

日本の通貨(硬貨と紙幣)には、昇順で一円→五円→十円→五十円→百円→五百円→千円→五千円→一万円があるので、通貨を一つの単位と見れば、これは前述の二・五進法である。この配列を見ると、一(100)、十(101)、百(102)、千(103)、一万(104)が十の冪数であり、五、五十、五百、五千が「十の冪数の五倍」である。

同様に、もし1円→3円→12円→36円→144円→432円→1728円→5184円→20736円というように通貨が配列されたら、これは「二・五進法」という言い方に倣えば、「四・三進法」となる。この配列では、1(120)、12(121)、144(122)、1728(123)、20736(124)が十二の冪数であり、3、36、432、5184が「十二の冪数の三倍」である。

英語表記編集

「基数 N 」を英語で、base N という。特定のNに関しては倍数接頭辞を基に名称がついているが、名称の付け方は不規則である。通常、接尾辞が -ary である語は、ラテン語の -arius (~の、~に関する) に由来して、「N 個一組」「N を単位とする」「N 個から成る」を意味する語である。一方、接尾辞が -imal である語は、ラテン語の -imus に由来して、「第 N」「N 分の一」を意味する語である。

以下は「基数 N 」、もしくはより明解に「N 個一組」「N を単位とする」「N 個から成る」という意味の形容詞である。

  • :binary
  • :ternary
  • 四:quaternary
  • :quinary
  • :senary
  • :septenary
  • :octonary, octal
  • 九:novenary
  • :denary, decimal
  • 十二:duodenary, duodecimal
  • 十五:quindenary, quindecimal, pentadecimal
  • 十六:sedenary, sedecimal, hexadecimal
  • 十八:octodenary, octodecimal
  • 二十:vicenary, vigesimal
  • 三十:tricenary, trigesimal
  • 六十:sexagenary, sexagesimal

これらを使い、a base-two numberで「二進数」、the base-two numeral systemで「二進法」を表す名詞となる。 同様にa binary numberthe binary numeral systemでもそれぞれ「二進数」、「二進法」を表す名詞となる。他の基数も同様。

p進数編集

N 進表記と関連が深い概念として、素数 p 毎に定まる p 進数というものもある。 名称は本稿で解説しているN 進表記の別名であるN 進数と同一であるものの、別概念ではある。ただし両者は非常に関連があり、整数の p進表記を(可算)無限桁の自然数の範囲に拡張したものが p進整数で、さらにそこに有限桁の小数部分を許したものが p進数である。ただし「無限桁の整数」(の一部は有理数として再解釈できるもののほとんど)は本稿で扱う普通の数(実数)とは異なる。

脚注・参照編集

  1. ^ 専門な注であるが、以下、太字で書かれた数字はシンタックスの体系内の記号であり、太字ではない数字はセマンティクスを記述するメタな記号である。

参考文献編集

関連項目編集