10進数【decimal number】10進法
概要
10進数では、桁が一つ左へ移動する毎に値の重みが十倍に、右へ移動するごとに十分の一になる。すなわち、整数の右端の桁は一(100)の位、その左は十(101)の位、その左は百(102)の位、その左は千(103)の位、といった具合に各桁の重みが決まる。小数点以下も同様で、小数第1位は十分の一(10-1)の位、小数第2位は百分の一(10-2)の位、小数第3位は千分の一(10-3)の位といった具合に、右へ移動するたびに重みが十分の一になる。
2進数と10進数
コンピュータ内部の電子回路では、電荷や電流のオンとオフの2つの状態を「0」と「1」に対応付けて数値を表現する2進数の方が都合が良いため、人間などが10進数で入力した値は、内部でまず2進数による表現に変換されてから記録、伝送、計算などを行うようになっている。
処理結果を人間が読む文書などに出力する場合も、内部の2進数による表現から10進数の表記に変換して出力される。ただし、プログラミングなどコンピュータ内部の処理に関する文脈では、数値を2進数のまま、あるいは2進数を4桁ごとにまとめた16進数で表記・出力することもある。2進表現を「バイナリ」(binary)、十進表現を「デシマル」(decimal)と呼ぶことがある。
コンピュータ上での扱い
プログラミング言語などでは、人間が日常的に数扱うときと同じように、単に数字を並べた数値の表記は10進数によるものとみなされることが多い。他の基数の表記は先頭や末尾に特定の符号を付けて表す。例えば、C言語やJavaなどでは先頭に「0x」を付けると16進数の数値表記とみなされる。
コンピュータ内部の2進数表現と10進数表記の間では頻繁に基数変換が行われるが、2進数の小数は桁の重みが2-nである関係で、単純な10進数の小数も循環小数になってしまうことが多い。例えば、10進数の「0.1」は2進数では「0.000110011…」という無限小数となり、計算と変換を繰り返すと正しい値との間に誤差が生じる。
このため、金額の計算など誤差の発生を最小限に抑えなければならない用途では、単純に2進数に変換して記憶や計算を行うことはせず、10進数の各桁を4ビットのビット表現に対応付けて管理する2進化10進数(BCD:Binary-Coded Decimal)などの表現形式を用いることがある。
「10進」と「十進」
どのような基数の表記でも、右から2桁目が1で右端が0の値はすべて「10」となり、それらは基数に応じて異なる値を表している。例えば、2進数の「10」は十進数で2、8進数の「10」は8、16進数の「10」は16である。
このため、基数が十であることを示すために「10進数」「10進法」のように表記するのは紛らわしく不適切であるとする考え方もある。そのような場合は位取りの関係ない漢数字の「十」という表記が好まれる。英語圏では同様の配慮を要する場合に英単語で “ten” あるいは “decimal” という表記を用いる。
