二進数方式でCPUが動いているデジタルコンピュータは(最初から二進数で入力し、演算し、二進数を出力することもできるが)十進法の数を扱う場合は、一旦、その十進数を二進数へと変換する基数変換を行っている[12]。これらの基数変換は例えば、キーボードから数値を入力する際や、人間のために計算結果を十進で表示する際に行われる。
有限の長さのビット列を扱う場合、算術演算の結果がそのビット列の長さに収まらないことがある(算術オーバーフロー)。
アナログ方式と比べて、デジタルデータはノイズの影響を受けにくい、という特徴がある[13][14]。 デジタルデータの伝送や記録・再生などを行う場合、デジタル量もアナログ量と同様に電圧・電流などの電気信号に置き換えて取り扱われるが、外乱が生じて信号にノイズが混入した場合、アナログ処理では特別な処理を行わない限り信号に混じったノイズを取り除くことが困難であるが、これに対し、デジタル処理では、数値は飛び飛びで離散しており、中間値をもたないので、ノイズによって生じた誤差が一定量以下ならばそれを無視することで、元のデータが保たれる。この数値は、六進数や十進数のような「素因数が複数」の記数法でも適用でき、データが整数表現の場合、1がノイズによって0.8(10)(=4/5)や0.4(6)(=2/3)や1.2(十進数だと6/5、六進数だと4/3)に変化しても1と扱う回路を用意しておけば良い。 実際の記録・伝送などでは上述の範囲を越えるノイズが混入する場合がある(例えば、1が0.4(10)(=2/5)や0.2(6)(=1/3)、または1.6(10)(=8/5)や1.4(6)(=5/3)に変化すると、異なる値0または2となる)が、デジタルコンピュータでは、そのような場合でも誤りを検出する手法が発明されており、データを予め誤り訂正符号などを使って冗長化しておくと、それを使い逆算して補正したり、補正出来ない場合は無視したり、誤りの発生を検出して再送を要求したりすることができ、信頼性の高い伝送や再生を行うことができる。 なお「デジタルコンピュータなら、いつでも計算が正確」と思うのは幻想でしかない[15][16][注釈 5]。特に浮動小数点方式で演算する場合は誤差が生じるということには注意を払う必要があり、数値が表現可能な数値範囲を超えてしまう可能性にも十分に用心する必要がある[16]。分かりやすい出来事を紹介すると、たとえば1991年、アメリカ軍のパトリオットミサイルは時間計算の誤差が原因で誤作動して死者が出てしまったし[16]、欧州宇宙機構のアリアン5型ロケットなどは1996年の打ち上げ時にわずか40秒で爆発し、このロケットのために費やした10年の歳月および70億ドルの開発費および搭載した5億ドル相当の装置が失われてしまった[16]。アリアン5型の爆発の直接の原因は、慣性基準装置(IRS)のソフトウェアが水平方向の速度を表現する64ビット浮動小数点数を16ビット整数に変換したため、16ビット整数の最大値である32768を越えてしまい変換に失敗したことであった[16]。 特に浮動小数点方式で非常に近い2つの実数の引き算を行うと、有効桁がひどく損なわれて非常に大きい誤差が発生することがある[17]。たとえば32ビット(単精度)の状態で2つの近い実数の引き算をさせると、数学的に正しい値とは約20%も計算値がズレることがある[17]。[注釈 6] また最小値に近い数値を扱っていないかどうかにも注意を払う必要がある。 デジタル処理では、定義された最大値を超えた場合には桁溢れ(オーバーフロー)となり、以後の演算処理の結果は保証されない。また、最小値に近い数値では量子化誤差が無視できず、S/N比の劣化として現れることがある。[注釈 7] デジタルコンピュータで小数点数(小数点がついているような数)を表現する方法としては、固定小数点表示 / 浮動小数点表示 という2つの方法がある[12]。
特徴
ノイズの影響を受けにくい
誤差
「コンピュータの数値表現#誤差」も参照
固定小数点数と浮動小数点数詳細は「固定小数点数」および「浮動小数点数」を参照