ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
桁溢れした時には、その飽和点を返す演算のこと。
ディジタル量の演算において、演算結果がオーバーフローする場合、自動的に値を最小値〜最大値の範囲に修正する機能をもった演算。
例えば16ビットで考えると、数値は0〜0xFFFFまでありうるが、0xFFFFに1を加えても溢れることはなく飽和点である0xFFFFを返す。このような加算を飽和加算という。
画像処理や音声処理では、加算を続けて飽和時には飽和点に戻すような処理が求められる。この飽和演算は、それを自動的に行なってくれる演算機能である。
たとえば、画面の輝度を上げる(下げる)処理の場合、一定以上の明るさでは真っ白(暗さでは真っ黒)より明るさが変わることはない。そういった上限(下限)付きの処理として、よく使われている。
DSPなどでは一般的な演算である。
最近ではx86系プロセッサーでも、マルチメディア命令セットにこのような演算が存在する。MMXなどがある。
たとえばMMXの飽和加算/減算の場合、次のような命令がある。
演算結果が127を超える場合は127に、-128を下回る場合は-128に丸め込む。
演算結果が32767を超える場合は32767に、-32768を下回る場合は-32768に丸め込む。
演算結果が255を超える場合は255に、0を下回る場合は0に丸め込む。
演算結果が65535を超える場合は65535に、0を下回る場合は0に丸め込む。
飽和時には返す値を飽和点に戻す処理が必要となる。
このため、それを行なわない演算(ラップアラウンド)よりも処理が遅くなりがちである。
CやC++などの場合、標準では飽和演算の関数や演算子が用意されていないので、マルチメディア命令の飽和演算命令を使うかどうかは、コンパイラー次第である。
全自動で飽和処理を判定するようなコンパイラーもあるが、うまく判定して処理を最適化できるかどうかもまたコンパイラー次第である。
この最適化技術に関連して、飽和演算の計算部分を自動判定するロジックは、特許となっているものもある。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます