計算機算術
信号処理で使われる飽和演算の説明として正しいものはどれか。
- A結果が表せる最大値を超えたら、反対側に回り込ませずに最大値にとどめる
- B結果が最大値を超えたら、自動的にビット数を増やして正確な値を保つ
- C結果が最大値を超えたら、0に戻してやり直す
答えと解説を見る
正解:A. 結果が表せる最大値を超えたら、反対側に回り込ませずに最大値にとどめる
通常の整数の演算では、最大値を超えると桁あふれで最小値の側に回り込み、例えば8ビット符号付きで 127 + 1 は −128 になります。音声や画像でこれが起こると、最も明るい点が急に暗くなるような大きな誤差になります。飽和演算では、最大値を超えたら最大値(127)、最小値を下回ったら最小値(−128)にとどめるので、誤差が小さく抑えられます。DSPやSIMDの命令に用意されています。ビット数を増やしたり0に戻したりはしません。
- A. 正しい。回り込ませずに最大値や最小値にとどめます。
- B. ビット数は固定のままです。
- C. 0に戻すと、かえって大きな誤差になります。