位取り記数法

出典: Wikipedio


プライバシー・ポリシー Wikipedioについて 免責事項

位取り記数法(くらいどりきすうほう)は、の表現方法の一種で、適当な自然数 N (> 1) を指定して N 種類の記号(数字)を用意し、それを列べることによって数を表すための規則である。

位取り記数法で指定された自然数 N をこの記数法の(てい)または基数といい、底が N であるような位取り記数法を「N 進法」「N 進記数法」という。N 進法では、N 種類の数字からなる記号列において、隣り合う上位の(けた)に下位の桁の N 倍の意味を持たせる位取りによって数を表現する。

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

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

N 進法の表記において正負小数を表現する場合には、符号小数点が併用される。

日常的に最多用されている記数法は十進法である。また、時間三百六十単位を基本にして、十二単位、三十単位、六十単位の組合せで表現され、場合によってはこれらの累乗数(十二進法六十進法。三十進法は今の所使われていない)が用いられる。

目次

概説

日常用いられている、十倍ごとに位をとる数の表記法は十進法と呼ばれ、零から九までの十通りの数値については、それぞれを表す 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 というような専用の文字(数字)が用意されている。そして 9 より一だけ大きい十を一文字で表記せず、1 と 0 の二文字を組み合わせて 10 と桁を上げて表記する。

同様に、二文字の数字を使えば、00 から 99 まで通り(十の平方)の数を表現することができる。99 より大きな数を表現するには、更にもう一文字(桁)増やして、100 と表記する(この表記法は 0 が発見されてから可能になった)。

このように、十種類の文字を列べて十通りの数を一桁で表し、百通りの数を二桁で、千通りの数を三桁で、というように十の N 乗通りの数を N 桁で表すのが十進法である。十進表記で記された数を十進数と呼ぶ流儀もある。

ここで、「十」という数をに変えると二進法に、二十に変えると二十進法になる。例えば、二十進法では普通、0 から 9 までの数字十種類と、A から J までのアルファベット十種類、合わせて二十種類の文字を共に数字として扱い、数を表現する。例えば、十進法では 15 と二桁で表記される数も、二十進法では F と一文字で表記できる。

逆に、八進法では 0 から 7 までの八種類の文字を数字として扱い数を表現するので、十進法で 8 と書き表される数は、八進法では 10 と表され、二桁を必要とする。

自然数の表記

任意の自然数 T に対し、r を十分大きく取れば、

<math> T = c_0\cdot 1 + c_1N + c_2N^2 + \dots + c_rN^r</math>

を満たし、各 ci は 0, 1, 2, 3, ..., N - 1 のいずれかであるような {ci} を一意的に取ることができる。

実際、次のようにすれば {ci} と r を求めることができる(底変換アルゴリズム)。

  1. TN で割った商を T1, 余りを c0 とする。
  2. T1N で割った商を T2, 余りを c1 とする。
  3. 以下 TiN で割った商を Ti+1, 余りを ci とする操作を繰り返す。
  4. Tk = 0 となった時 r = k - 1 とする。

さて、このとき、0 から N - 1 までの自然数に何らかの記号(数字)を対応させておいて、 cr, cr-1, ..., c1, c0 に対応する記号を順に並べれば、任意の自然数 T を有限個の記号で表記できることになる。 この表記のことを TN 進表記 という。

なお、上記ではアルゴリズムが終了するまで r が幾つになるか分からないが、対数を用いれば

<math>\left\lfloor\log_N T\right\rfloor</math>

として事前に r を求めておくこともできる。ただし、

<math>\lfloor x\rfloor</math>

x を超えない最大の整数である(床関数参照)。

二進表記 三進表記 六進表記 十進表記 十二進表記
1 1 1 1 1
10 2 2 2 2
11 10 3 3 3
100 11 4 4 4
101 12 5 5 5
110 20 10 6 6
111 21 11 7 7
1000 22 12 8 8
1001 100 13 9 9
1010 101 14 10 A
1011 102 15 11 B
1100 110 20 12 10

十進表記の 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 が成り立っているので、対数を用いれば

<math>5 < \log_{5}5213 < 6</math>

となり、

<math>r=\left\lfloor\log_{5}5213\right\rfloor =5</math>

が分かる。

二百七十の表記法は、以下のような意味となる。(便宜上、計算式を十進表記で記す)

  • 二進表記(100001110):270 = 256 + 14 = 28 + 23 + 22 + 21
  • 六進表記(1130):270 = 216 + 54 = 63×1 + 62×1 + 61×3
  • 十進表記(270):270 = 200 + 70 = 102×2 + 101×7
  • 十二進表記(1A6):270 = 144 + 126 = 122×1 + 121×10 + 6
  • 二十進表記(DA):270 = 260 + 10 = 201×13 + 10

また、500 と表記される数は、十進表記では五百だが、十二進表記では七百二十を、二十進表記では二千を意味する。

これは、十二進表記では「五倍の百四十四(=十二平方)」を意味し、二十進表記では「五倍の四百(=二十の平方)」を意味するからである。従って、十二進表記の“500 ÷ 26 = 20”は、十進表記では“720 ÷ 30 = 24”と直される。

整数の表記

T が負の数である場合には 記号列の先頭に負符号 − を付けて、その後に絶対値 |T| の N 進表記を続けることにすれば、任意の整数を同様にして表記できる。

二進表記 三進表記 六進表記 十進表記 十二進表記
−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

有理数・実数の表記

小数表現

任意の有理数・実数は

<math>a_l N^l + a_{l-1}N^{l-1} + \cdots + a_1 N + a_0 + {a_{-1}\over N} + {a_{-2}\over N^2} + \cdots

</math> (各位の ai は 0 以上 N 未満の整数)の形に表される。これを N 進法では(0 以上 N 未満の整数にそれぞれ記号を与えて)

<math>a_la_{l-1}\ldots a_1a_0.a_{-1}a_{-2}\ldots</math>

と表記する。

十進表記 十二進表記 二十進表記
1 ÷ 2 0.5 0.6 0.A
1 ÷ 3 0.3333… 0.4 0.6D6D…
1 ÷ 4 0.25 0.3 0.5
1 ÷ 5 0.2 0.2497… 0.4

例1

二進法で 0.111 と表される数は、零、二分の一、四分の一、八分の一を加えた数という意味で、例えば十進法などでは

<math> 0 + 1 \times{1\over 2} + 1 \times{1\over 4} + 1 \times{1\over 8} = {7\over 8} = 0.875</math>

と表される。

例2

十進法で表された絶対値が1未満の小数をN進法に変えたい場合、次のようにすればよい。

  1. Nを掛け、整数部と小数部に分ける。
  2. その小数部にNを掛け、再度整数部と小数部に分ける。
  3. 小数部が0になるまで同様の操作を繰り返す。
  4. 整数部を上位から並べる。

例えば十進表記の0.8125を2進表記に置き換える場合、

  • 0.8125×2=1.625=0.625+1
  • 0.625×2=1.25=0.25+1
  • 0.25×2=0.5=0.5+0
  • 0.5×2=1.0=0.0+1

となるので、2進表記では0.1101と表される。

関連項目

参考文献

ヘンリー・S・ウォーレン、ジュニア『ハッカーのたのしみ』 ISBN 4434046683ar:نظام عد be:Сістэма злічэння be-x-old:Сыстэма зьлічэньня bg:Бройна система bs:Brojevni sistem ca:Sistema de numeració cs:Číselná soustava cv:Шутлав йĕрки da:Talsystem de:Zahlensystem en:Numeral system eo:Cifereca sistemo es:Sistema de numeración eu:Zenbaki-sistema fi:Lukujärjestelmä fr:Système de numération gl:Sistema de numeración he:שיטת ספירה hi:संख्या पद्धतियाँ hr:Brojevni sustav ht:Sistèm nimewotasyon hu:Számrendszerek id:Sistem bilangan it:Sistema di numerazione ka:თვლის სისტემა ko:기수법 ml:സംഖ്യാസമ്പ്രദായങ്ങൾ ms:Sistem angka nl:Talstelsel no:Tallsystem pl:System liczbowy pt:Sistema de numeração ro:Sistem de numerație ru:Система счисления sh:Brojevni sistem sl:Številski sistem sv:Talsystem ta:எண்ணுரு th:ระบบเลข tr:Sayı sistemi uk:Система числення yi:נומערן סיסטעם zh:记数系统 zh-min-nan:Sò͘-jī

個人用ツール