固定
小[[数]]点
数とは、コンピュータで
小[[数]]を扱う方法の一つで、
小[[数]]点が固定された位置にある
数値表現形式です。浮動
小[[数]]点
数と異なり、
小[[数]]点の位置が固定されているため、表現できる
数値の範囲は狭くなりますが、演算が高速であるという利点があります。
固定
小[[数]]点
数は、整
数と同様に
ビット列で表現されます。
小[[数]]点の位置は予め決められており、設計者が用途に応じて決定します。例えば、16
ビットの固定
小[[数]]点
数で
小[[数]]部を8
ビットとすると、整
数部は8
ビットとなります。
10進
数の例では、123という整
数は、
小[[数]]点を1桁目とすると12.3、2桁目とすると1.23となります。同様に、2進
数でも
小[[数]]点の位置を決めれば、
小[[数]]部を持つ
数値を表せます。
固定
小[[数]]点
数は、浮動
小[[数]]点
数と比較して以下の特徴を持ちます。
表現できる値の範囲が狭い: 浮動小[[数]]点数と比べて、表現できる数値の範囲は非常に狭いです。
演算が高速: 小[[数]]点の位置が固定されているため、演算処理が高速に行えます。
情報落ちがない: 浮動小[[数]]点数では起こりうる情報落ちという現象が、固定小[[数]]点数ではそもそも発生しません。
ハードウェアが単純: 浮動
小[[数]]点演算器(
FPU)のような複雑なハードウェアが不要な場合もあります。
これらの特徴から、固定
[小数]]点
数は、
数値の範囲が限定的なコンピュータグラフィックスや[[デジタルシグナルプロセッサ]など、高速な演算が求められる場面でしばしば利用されます。
Q表記
固定
小[[数]]点
数の
小[[数]]部の
ビット数を表すために、Q表記(Qフォーマット)が用いられます。Qm.nという表記では、m
ビットが整
数部、n
ビットが
小[[数]]部を表します。例えば、Q1.15は、整
数部1
ビット、
小[[数]]部15
ビットの固定
小[[数]]点
数です。
固定
小[[数]]点演算は、基本的には整
数演算と同じ方法で行われます。しかし、乗算や除算では、演算結果の
小[[数]]点の位置がずれるため、シフト演算によって正しい
小[[数]]点の位置に戻す必要があります。加算と減算は、そのまま整
数演算として実行できます。乗算では、
小[[数]]点以下の
ビット数は、乗算する二つの
数の
小[[数]]点以下の
ビット数の合計となります。除算では逆の計算が行われます。
精度
固定
小[[数]]点
数の精度は、
小[[数]]部の
ビット数によって決まります。
ビット数が多ければ多いほど、精度が高くなります。しかし、固定
小[[数]]点
数の表現できる値の範囲は限られているため、
数値の範囲外の
数値を扱う場合、桁落ちやオーバーフローが発生する可能性があります。
実数値との換算
固定
小[[数]]点
数と実
数値の相互変換は、
小[[数]]点の位置と最下位
ビットの重みを考慮して行います。四捨五入などの丸め処理が必要になる場合もあります。
固定
小[[数]]点
数は、以下のような用途で用いられます。
コンピュータグラフィックス:座標や画素値などの表現
[デジタルシグナルプロセッサ]:音声や画像信号の処理
組込みシステム:資源の少ないシステムにおける数値演算
まとめ
固定小[[数]]点数は、浮動小[[数]]点数とは異なる特性を持つ数値表現形式です。高速な演算とハードウェアの簡素化という利点がありますが、表現できる値の範囲が狭く、精度にも注意が必要です。用途に応じて、固定小[[数]]点数と浮動小[[数]]点数を使い分けることが重要です。
関連項目
浮動
小[[数]]点
数
二進化十進表現 (BCD)
丸め誤差