オーバーフローの処理方法
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/10/10 23:54 UTC 版)
「算術オーバーフロー」の記事における「オーバーフローの処理方法」の解説
オーバーフローの処理方法はいくつかある。 設計時の配慮 正しいデータ型(大きさと符号の有無)を選択する。 発生を未然に防ぐ 演算を注意深く並べ、必要に応じてオペランドをチェックする。それによって演算結果がオーバフローとならないようにできる。 発生時の処理 オーバフロー発生時にその場で処理をする。例えば、2バイトの数値を1バイト毎の加算で加算する場合、まず下の桁(バイト)を加算して次に上の桁を加算する。このとき下の桁の加算でキャリーが発生した場合、上の桁の加算にキャリーのぶんも加算しなければならない。CPUには一般にそのような場合を検出する方法があり(ステータスレジスタ参照)、レジスタより大きな数の演算をサポートできるようになっている。例えば、Intel 8086の場合、オーバーフロー検知用のINTO命令を実行することでオーバーフローフラグをチェックし、セットされている場合には、オーバーフロー例外を発生する。 伝播 格納できる範囲を超えた値の場合、オーバーフローであることを示す特別な値を格納しておき、その後の演算に伝播させていく。長い計算の最後に値をチェックすればオーバフローが発生したことがわかるので、このような扱い方が便利な場合もある。特にFPUによる浮動小数点数の演算でよく使われる。 無視 最もよくある手法。しかし、結果が不正になるだけでなく、セキュリティホールの原因となることもある。
※この「オーバーフローの処理方法」の解説は、「算術オーバーフロー」の解説の一部です。
「オーバーフローの処理方法」を含む「算術オーバーフロー」の記事については、「算術オーバーフロー」の概要を参照ください。
- オーバーフローの処理方法のページへのリンク