×
科目A|基礎理論
コンピュータのプロセッサ(CPUなど)の内部構造において、固定小数点数の計算は、整数を処理するための回路(ALU:算術論理演算装置)をそのまま使い回すことができるという絶大な強みを持っています。小数点の位置がどこにあるかは、あくまでプログラムを書く人間やソフトウェア側の「約束事」として管理され、ハードウェア側からは単なる整数のビット列として見えています。
例えば、16ビットのデータのうち、上位8ビットを整数部分、下位8ビットを少数部分と見なす(これをQフォーマットなどと呼びます)と決めておけば、加算や減算は普通の整数と同じように足し引きするだけで正確な結果が得られます。掛け算や割り算を行った後だけ、ずれてしまった小数点の位置をシフト演算で元の位置に調整する処理を挟みます。
このような特性から、複雑な浮動小数点演算ユニット(FPU)を搭載できない安価なマイコンや、消費電力を極限まで抑えたい組み込みシステム、あるいは音声データなどの信号処理(DSP)をミリ秒単位の超高速で処理しなければならない場面で、固定小数点数は現在でも非常に重要な技術として活用されています。また、浮動小数点数で発生する「丸め誤差」を嫌う金融機関のシステムや会計ソフトにおいても、金額を扱う際には固定小数点の考え方(あるいは10進数のまま計算するBCD演算など)が採用されることが一般的です。