位取り記数法
位取り記数法（くらいどりきすうほう）、もしくは「"N" 進法」（エヌしんほう）とは、数の表現方法の一種で、予め定められた"N" 種類の記号（数字）を列べることによって数を表す方法である。(位取りのことを桁ともいう。)
今日の日本において通常使われているのは、 "N" が十である十進法であるが、コンピューターでは二進法、八進法、十六進法なども用いられる。歴史的には、十進法が世界的に広まったのはフランス革命の革命政府がメートル法とともに十進法を定めて以来であり、それ以前は国や分野によって様々な "N" に対する "N" 進法が用いられていた。
本項では"N" が自然数の場合を扱う。それ以外の場合については広義の記数法の記事を参照のこと。また 後述する"p"進数の概念とは（関連があるものの）別概念であるので注意が必要である。
位取り記数法では、一つの列に N 個の数字と呼ばれる記号で数を表現し、一つの列に N 個の数字を容れて、N に達したら数列を一つ増やす。数字を容れる一つの列を桁（けた）といい、桁の意味する数を位（くらい）という。このN個の中には、必ず零を意味する数字が含まれ、桁の基数 N は「10」というように「整数第二位が"一"で整数第一位が"零"」として表記される。この「N進」と呼ばれる数列は、「Nの倍数」(Nの倍加)ではなく、「Nの冪数」(Nの冪乗)で進む。即ち、ここでの「進」とは「桁」を進めることである。
より派生して、Nの2乗は「100」、Nの3乗は「1000」、Nで1回分割は「0.1」、Nで2回分割は「0.01」、Nで3回分割は「0.001」として表記される。このように、整数第一位（N）を「一の位」、整数第二位（N）を「Nの位」、整数第三位（N）を「Nの位」、整数第四位（N）を「Nの位」、小数第一位（N、1÷N）を「N分の一の位」、小数第二位（N、1÷N）を「N分の一の位」、小数第三位（N、1÷N）を「N分の一の位」として数を表現する。
以下に、零（つまり無の数）も加えた一進法（桁上がりが無い）と位取り記数法の差異を、図形記号を用いて示す。◎を零、●を一として、●は六つごとに区切る。ここでは、単偶数進法である六進法と十進法を例に挙げる。アラビア数字を「ア数」と略記する。
このように、六進法なら六（三の二倍）、十進法なら十（三の二倍に四を加える）というように、決められた数値になったら新しい列を出す方法が「位取り記数法」である。六進法なら六の束の更に六の束、つまり三十六の束で新しい列の出現が二回目（＝二乗）となっている。十進法なら十の束の更に十の束、つまり百の束で新しい列の出現が二回目（＝二乗）となるが、六進法では百を「三十六が二つ、六が四つ、一が四つ」として表記する。また、新しい列の出現を「桁上がり」と呼ぶこともある。
単位系でも、N進法では必ずNの冪乗で単位が設定される。
数値観でも、N進法ではNの2乗が「満点」という数値観と、Nの冪数が「多数」という数値観が形成される。例えば、十進法では「百点満点」「百選」「千倍返し」、六進法では「三十六景」「三十六選」に対して、に対して、十二進法は「百四十四点満点」「百四十四選」「千七百二十八倍返し」、十六進法は「二百五十六点満点」「二百五十六選」「四千九十六倍返し」という数値観になる。
従って、素因数が同じでも、冪数が異なれば数値観も異なる。例えば、「10＝2×3」の十二進法では百四十四が「100」で多数の代名詞になるのに対して；「10＝2×3」の六進法では三十六（100）や二百十六（1000）が多数の代名詞になり、百四十四は「400」と表記されて価値が2/3に下がる。
アラビア数字やマヤ数字のように、桁の底と同じ数が「10」として表される方法が位取り記数法である。一方、ローマ数字やヒエログリフや図形記号のように、桁の底を「10」ではなく新しい記号として表す方法は「位取り」記数法ではない（）が、便宜上この項で概説する。
例として、十二進法を図形記号を用いて説明する。ここでは便宜上、十進表記を下付きのA、十二進表記を下付きのCで示し、▲を12（= 10）、●を1、| を1/12（= 0.1）とする。ここで重要な点は、「"どの数で新しい記号が現れるか"」である。上記では、| を12個統めた物として●、●を12個統めた物として▲、▲を12個統めた物として◆、◆を12個統めた物として◎という記号が導入されている。純粋な十二進法は、24や60といった「▲の倍数を、桁や単位にすること」（＝12の2倍、12の5倍）でもなく、288や432といった「◆の倍数を、桁や単位にすること」（＝12の12倍の2倍、12の12倍の3倍）でもなく、144や1728といった「◆や◎などの新しい記号が現れる数を、桁や単位にすること」（＝12の12倍、12の12倍の12倍）なのである。｛※この意味で、ローマ数字は10倍だけではなく、5倍のタイミングでも新しい記号が現れるので、純粋な十進法ではない。｝「10」で表す位取り記数法に置き換えると、▲の倍数は「1の位が0」、◆の倍数は「1の位と10の位が0」に対して、新しい記号が現れる数は「1に0が幾つも付く」形になる。今日の日本において最も身近な十進法を例に説明する。十進法では、十個の数字と呼ばれる記号を用い、一桁に十個の数字を容れて、十倍毎に桁を増やす。数列は、十、二十、三十といった「十の"倍"数」ではなく、十、百、千といった「十の冪数」で進む。
アラビア数字なら
の十個であり、
漢数字なら
の十個である。以下、アラビア数字を例に説明するが、漢数字の場合も同様である。
十進法ではこれらの数字を列べる事で数を表現する。
例えば、253.48は、
を表す。
また十進法では、以下の性質が満たされる。
例えば、メートル法の単位は、倍増の接頭辞として「ヘクト」や「キロ」、分割の接頭辞として「センチ」や「ミリ」などが使用されている。これらは、例えば 1 キロメートルは十の3乗（10）である 1000 メートル、1 センチメートルは十で2回分割（10）した 1/100 メートル、1 ミリメートルは十で3回分割（10）した 1/1000 メートルであり、1080 メートルや 1/30 メートルといった「十の倍数」や「1 ÷ 十の倍数」でもなく、200 メートルや 1/3000 メートルといった「十の冪数のM倍」や「1 ÷ 十の冪数のM倍」でもない。
"N" 進法は、以上の十進法の説明を自然に "N" の場合に拡張する事で得られる。
例えば四進法をアラビア数字で表した場合、使う数字は
の四種類の記号であり、四進法における312.02は、
を表し、これは十進法の54.125にあたる。
また四進法では、十進法に類似した以下の性質が満たされる。
以上の話でも分かるように、同じ「312.02」でも四進法のものと十進法のものでは値が異なる。このため、位取り記数法の話をするときには、常に何進法の話であるのかを明示する必要がある。
十二進法、十六進法、二十進法のように、"N" が十より大きい場合は用いる数字は、アラビア数字だけでは足りなくなる。そこで、十以上の数を表記する「数字」として、ラテン文字のアルファベットの大文字を用いる事が多い。なお、漢数字を使う際には、アルファベット大文字に相当する十干を用いて、十一を「甲」、十二を「乙」、十三を「丙」…と表記することになる。
例えば十六進法であれば、「数字」として
を用い、A、B、C、D、E、Fはそれぞれ十進法の自然数10、11、12、13、14、15を表す。
従って例えば2F3.A7は
を表し、これは十進法の755.652344にあたる。
また、十六進法では、以下の性質が満たされる。
同じ「312.02」でも、四進法と十進法では値が異なる。そこで四進法であることを明記するため、Nが十未満である場合には、一桁の下付き数字を付けて
或いは数字本体か下付きのどちらかを括弧で
と表記する事もある。
なお、Nが十以上である場合には、十以上の数字にアルファベット大文字を充てている事から、アルファベット大文字を用いた
とも表記できるが、実際は
というように十を「A」ではなく「10」、十二を「C」ではなく「12」というように十進表記の二桁で表記する方が一般的になっている。
コンピューターで特に重要性の高い二進数、八進数、十進数、十六進数には、固有の表記もある。ただし、コンピューター言語により表記方法が若干異なる場合もある。以下の表に、代表的なN進法の位数と換算値を掲載する。底の特徴として、二と十六は「二の冪数」、三は「奇数」、六と十は「奇数の二倍」、十二と二十は「奇数の四倍」が挙げられる。
数値、特に 1÷N の可分性は、N の約数にどれが含まれているかで決まるが、より明確には N を素因数分解した時にどの素数が含まれているかで決まる。従って、単に約数が多いというだけではなく、約数が素因数分解した時にどんな数になるかも見なければならない。
不可分の例として、「八進法は 1/3 も 1/5 も割り切れない」「九進法は 1/2 も 1/4 も割り切れない」「十進法は 1/3 が割り切れない」「十二進法は 1/5 が割り切れない」「十五進法は 1/2 も 1/4 も割り切れない」「十六進法は 1/3 も 1/5 も割り切れない」が挙げられる。これらの要因は、八や十六は奇数（3や5など）が約数に含まれていないから；九や十五は偶数（2や4など）が約数に含まれていないから、十には3が約数に含まれていないから、十二には5が約数に含まれていないからである。各数を素因数分解すると、八は2、十六は2、九は3、十五は3×5、十は2×5、十二は2×3となる。
具体的に見ると、四進法、八進法、十六進法は、Nの約数が2の冪数しか無いため、「2でしか割り切れない」。これらは「1/奇数」に変換できる小数が無く、1÷3 や 1÷5 といった奇数分割は不可能で、偶数でも 1÷6｛六分割。1÷(2×3)｝ や 1÷A｛十分割。1÷(2×5)｝や 1÷C｛十二分割。1÷(2×3)｝や 1÷K｛二十分割。1÷(2×5)｝といった「1 ÷ (2×奇数)」は割り切れない。同じく、九進法は、Nの約数が3しか無いため、「3でしか割り切れない」。こちらは「1/偶数」に変換できる小数が無く、1÷2 や 1÷4 や 1÷6 といった偶数分割は不可能で、奇数でも因数が3だけでない限りは割り切れない。これら八進法や九進法や十六進法に共通する要素は、冪数進法で「素因数が一つだけ」である。
逆に、六進法は「2と3でしか割り切れない」、十進法は「2と5でしか割り切れない」と低く見られやすいが、可分性の基礎である素因数の数は、八進法や十六進法といった「二の冪数進法」を上回る。素因数分解すると、六は「2×3」、十は「2×5」と素因数を二つ持っているのに対して、八は「2」、十六は「2」で素因数が「2」だけしか無い。十六の約数である2, 4, 8は、全て2の冪数に過ぎない。小数を既約分数に変換すると、六進法はm/3、十進法はm/5の小数が現れるのに対して、八進法など「二の冪数進法」は「m/奇数」となる小数が現れないし、九進法は「三の冪数進法」なので「m/偶数」となる小数が現れない。
Nの平方数も、三十六である(100)は4（＝2）でも3でも9（＝3）でも二十七（＝3）でも割り切れる（※二十七分割は (100÷43 = 1.2) で有限小数となる）し、百である(100)は4（＝2）でも5でも二十五（＝5）でも割り切れるのに対して、六十四である(100)と二百五十六である(100)は2の冪数でしか割り切れない。
従って、六進法、十進法、十二進法、二十進法などは、8がNの約数に含まれていないが、1÷8 は割り切れる。これは、8が2であり、Nが偶数なので2が約数に含まれているからである。また、六進法や十二進法は、9がNの約数に含まれていないが、1÷9 は割り切れる。これは、9が3であり、3がNの約数に含まれているからである。
このように、「約数の多さ」ではなく、「素因数の多さ」が可分性を広げるという事である。
※ 割り切れない小数の循環節は下線で示す。
以下話を簡単にする為、非負の有限小数の場合のみを扱うが、無限小数の場合も同様である。
なお以下、「数字」という言葉を通常よりかなり広範な意味に用いており、アラビア数字、漢数字、マヤ数字、英語のアルファベットなどを含めた任意の記号を指している事に注意されたい。
自然数 "N" を一つ固定する。( "N" をこの記数法の底（てい）または基数という)。
さらに "N" 個の記号formula_4を固定する。(例えばアラビア数字とアルファベットで十六進法を表す場合は、"N" =16 で、formula_5)。
さらに各 formula_6に対し、
と定義する。
このとき、記号formula_8を数字として用いた N 進法とは、自然数 "n" 、 "m" を用いた
という形に表記( N 進表記、もしくは N 進数表記)に非負の実数
を対応させる表記体系の事である。
"N" 進表記された数という意味で「"N" 進数」という呼称を使用することもある。
"N" 進数表記の先頭に「+」もしくは「-」の符号をつけることで、数の正負を表現することもできる。
符号をつけた場合の "N" 進数表記の詳細な説明は省略する。
この節では特に断りがない限り十進数について述べるが、他の基数についても同様である。
実数の "N" 進表記は一意ではない。よく知られているように、
である。また、以下のように、上位桁に不要な0を付け加えることもできる
通常は「0013」のような表記は許さないとする事が多いが、コンピューターなどでは、最大で4桁の整数値であることを示すため、あえて「0013」のような表記をする場合がある。
以上のような例をのぞくと0以外の実数は一意に表現できる。
しかし0のみは
の二通りの表記が可能である(いわゆる負のゼロの問題)。
これが原因で、コンピューター・プログラムでは0のみ例外処理を求められる場合がある。
また、一般には0は1桁の数とされているが、ルールを優先し1桁の数と認めない場合もある(覆面算#ルール)。
表計算ソフトの列名などで用いられている、A, B, ..., Z, AA, AB, ... のような形式は、位取り記数法の一種と考えることができ、かつ0より大きい整数を一意に表せる。()
与えられた非負整数 "T" を、記号formula_11を数字として用いた "N" 進表記
で表すには、以下のアルゴリズムを用いればよい。
なお、このアルゴリズムは、 "M" ≠ "N"により"M" 進表記されている "T" を "N" 進表記に書き換えるときに使われる事が多いので、このアルゴリズムを底の変換アルゴリズムと呼ぶ。なお、"T" >0に対しては等式
が知られている(なお、添え字を0から始めているので、"T" の桁数は"r" +1) 。ここでformula_17は床関数である。十進法の 5213 を五進法に置き換える場合：
から、5213 = 3 + 2 × 5 + 3 × 5 + 1 × 5 + 3 × 5 + 1 × 5 となるので、五進表記では 131323 と表すことができる。また、5 = 3125, 5 = 15625 であるから、5 ≤ 5213 < 5 が成り立っているので、対数を取ると
となり、
が分かる。二百七十の表記は、以下の通りになる。（便宜上、計算式を十進法で表記する）「234」の意味する数は、以下の通りになる。（便宜上、計算式を十進法で表記する）
「500」の意味する数は、以下の通りになる。（便宜上、計算式を十進法で表記する）上記の通り、十二進法の 500 は七百二十であり、十進法では 720 と表記される。従って、十二進法の"500 ÷ 14 = 39"は、以下のように変換される。
“1034 ÷ 11”の商も、以下のようになる。十進法の小数 0.625 は、六進法では 0.343 となり、十二進法では 0.76 となり、二十進法では 0.CA となる。いずれも分数に換算すると十進法の 5/8 となる小数であるが、計算式は以下の通りになる。六進法の小数 0.144 は、十二進法では 0.368 となる。分数に換算すると十進法の 8/27（= 2/3）となる小数であるが、こちらの計算式は以下の通りになる。十進法では、機械的に十倍、百倍、千倍、一万倍…の順で増える。同じく、十二進法では、機械的に十二倍、百四十四倍、千七百二十八倍、二万七百三十六倍…の順で増える。
しかし、底を2つに分ける場合がある。十進法に対して、二・五進法（にごしんほう。二十五進法とは別概念）では二と五の2つの底があるので、桁が上がる度に五倍→二倍→五倍→二倍…と交互になり、「十の冪数」と「十の冪数の五倍」が交互に現れる。これはそろばんと同じく一桁が「一の位」4つと「五の位」1つで構成される方法だが、計算機にも応用されている。
バビロニアの六十進法もそろばんに似た方法で、一桁が「一の位」9つと「十の位」5つで構成されており、整数は十倍→六倍→十倍→六倍と交互になり、小数は六分の一→十分の一→六分の一→十分の一と交互になる。この方法では、整数第二位は「六十の位」と「六百の位」に分かれ、整数第三位は「三千六百の位」と「三万六千の位」に分かれ、小数第一位は「六分の一の位」と「六十分の一の位」に分かれ、小数第二位は「三百六十分の一の位」と「三千六百分の一の位」に分かれている。
日常生活で用いている数には、このように複数の基数が混在するものが存在する。例えば、時間の単位は、三百六十を全体値として（度数法）、十二と三十の積になるように設定されている。1世代は30年＞1年は12ヶ月＞1ヶ月は30日＞1日を12分割（十二時辰、十二宮、十二支など）という循環である。これは、二・五進法と同様に名付けるとすれば「十二・三十の単位系」であり、十二進法でも三十進法でもない。
真に時間が「十二進法」ならば、一日は二十四時間（十二の二倍）ではなく百四十四時間（十二の二乗）であらねばならない。時計以外の時間も「十二進法」ならば、全ての単位が 1年＝12ヶ月＝144日＝1728(時針の1回転の単位)＝20736時間 というように機械的に十二の冪乗で変わるように設定されねばならない。そして、桁と記数法と命数法も、10はA、30は26、60は50、90は76、360は260、720は500、1080は760であらねばならない。同じく、「三十進法」ならば、桁と命数法も三十倍ずつ変わり、九百（三十の二乗）や二万七千（三十の三乗）といった三十の冪乗を意味する単位が存在せねばならないが、これらがどれも存在していない。
数値観も、十二進法は「144点満点」であり、度数法は「360点満点」で全く異なる。「三百六十を全体値とする、十二・三十の単位系」は、720を「2倍」(＝360×2)、1080を「3倍」(＝360×3)、144を「2/5」(＝360の2/5)か「4と4/5」(30×4 + 24)、90を「1/4」(＝360÷4)か「3倍」(＝30×3)、72を「1/5」(＝360÷5)か「2と2/5」(＝30×2 + 12)、60を「1/6」(360÷6)か「2倍」(＝30×2)と見なす体系である。しかし、十二進法は、720を「5倍」(＝144×5)、144を「全体値」、360を「2倍半」(＝144×2 + 144÷2)、90を「5/8」(＝144の5/8)、72を「半分」(＝144÷2)、60を「5倍」か「5/12」(＝144の5/12)と見なす体系であり；12の3乗（＝144×12）である1728も「全体値」になれて、720は60と同じく「5/12」(＝1728の5/12)、1080は90と同じく「5/8」(＝1728の5/8)と見なされる。
これらの要因から、「十二進法」や「三十進法」という言い方は誤りである。
また、現在は1日が12の2倍で24時間（←12の12倍である144時間ではない）で、時刻の単位は1日＝24時間、1時間＝60分、1分＝60秒であるから、これも二・五進法と同様に名付けるとすれば「二十四・六十・六十の単位系」である。こちらは三千六百 (六十の二乗)という六十の冪乗を意味する単位は存在しているが、五百七十六 (二十四の二乗)など二十四の冪乗を意味する単位が存在していないため、「二十四進法」という言い方は誤りである。
日本の通貨（硬貨と紙幣）には、昇順で一円→五円→十円→五十円→百円→五百円→千円→五千円→一万円があるので、通貨を一つの単位と見れば、これは前述の二・五進法である。この配列を見ると、一（10）、十（10）、百（10）、千（10）、一万（10）が十の冪数であり、五、五十、五百、五千が「十の冪数の五倍」である。
同様に、もし1円→3円→12円→36円→144円→432円→1728円→5184円→20736円というように通貨が配列されたら、これは「二・五進法」という言い方に倣えば、「四・三進法」となる。この配列では、1（12）、12（12）、144（12）、1728（12）、20736（12）が十二の冪数であり、3、36、432、5184が「十二の冪数の三倍」である。
「基数 "N" 」を英語で、base N という。特定のNに関しては倍数接頭辞を基に名称がついているが、名称の付け方は不規則である。通常、接尾辞が -ary である語は、ラテン語の -arius (～の、～に関する) に由来して、「N 個一組」「N を単位とする」「N 個から成る」を意味する語である。一方、接尾辞が -imal である語は、ラテン語の -imus に由来して、「第 N」「N 分の一」を意味する語である。
以下は「基数 "N" 」、もしくはより明解に「"N" 個一組」「"N" を単位とする」「"N" 個から成る」という意味の形容詞である。
これらを使い、a base-two numberで「二進数」、the base-two numeral systemで「二進法」を表す名詞となる。
同様にa binary number、the binary numeral systemでもそれぞれ「二進数」、「二進法」を表す名詞となる。他の基数も同様。
"N" 進表記と関連が深い概念として、素数 "p" 毎に定まる"p" 進数というものもある。
名称は本稿で解説している"N" 進表記の別名である"N" 進数と同一であるものの、別概念ではある。ただし両者は非常に関連があり、整数の "p"進表記を（可算）無限桁の自然数の範囲に拡張したものが "p"進整数で、さらにそこに有限桁の小数部分を許したものが "p"進数である。ただし「無限桁の整数」（の一部は有理数として再解釈できるもののほとんど）は本稿で扱う普通の数（実数）とは異なる。