固定
小数点
数とは、コンピュータで
小数を扱う方法の一つで、
小数点が固定された位置にある
数値表現形式です。浮動
小数点
数と異なり、
小数点の位置が固定されているため、表現できる
数値の範囲は狭くなりますが、演算が高速であるという利点があります。
固定小数点数の仕組み
固定
小数点
数は、整
数と同様に
ビット列で表現されます。
小数点の位置は予め決められており、設計者が用途に応じて決定します。例えば、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)
丸め誤差