DSPには固定小数点と浮動小数点の2種類に対応したものがあります。それぞれの数値表現を比較してみます(それぞれの演算方法については他の文献を参考にしてください)。以下ではビット長を32ビットとして比較を行うことにします。
固定小数点の場合、2進小数点の位置によって見え方が変わりますので、ここではLSBビット(最下位ビット)の右わきにあるものとします。またMSB(最上位ビット)は符号ビットとします。表現できる数値の範囲は以下のようになります。
●固定小数点の場合 |
|
最大の正数
最小の正数
最大の負数
最小の負数
|
231-1
-231-1
|
=
=
|
2.147483647×109
1
-1
-2.147483648×109
|
|
同様に、IEEEの浮動小数点表記では以下のような範囲の数値を表現できます。
●浮動小数点の場合 |
|
最大の正数
最小の正数
最大の負数
最小の負数
|
(2-2-23)×2127
1×2127
-1×2127
-(2-2-23)×2127
|
=
=
=
=
|
3.4028234×1038
-5.8774747×10-39
-5.8774747×10-39
-3.4028234×1038
|
|
両者を比較してみると、表現できる数値の範囲が桁外れに違うことが分かると思います。大きい数では浮動小数点表記の方が約1.6×229倍も大きな数が、また小さい数では約1.7×238倍も小さな数が表現できるわけです。また、数値演算に関しても、固定小数点の場合、見えない2進小数点の動きを追いかけながら演算を進めなければならない一方、浮動小数点は演算器が自動的に行ってくれるため、格段に楽といえます。
しかし、固定小数点には複雑なフォーマットがないため、それだけ演算処理が高速になります。また、ハードウェアがシンプルな分固定小数点のプロセッサの方が安価に手に入ります。浮動小数点用のデバイスは、固定小数点のものと比較して格段に値段が高価になります。
したがって、そういったコスト面も含めて、最適なデバイスを選ぶことが必要となります。