6

個人的なプロジェクトとして、私は自分のペット プロジェクトの任意精度数値型の実装に取り​​組んでいます。

私は、これを行う人気のある、テスト済みの堅牢なライブラリをすべて知っています。自己啓発教育プロジェクトとして解決に取り組みたい。

私はその領域を調査しており、実際に計算を行う前に、操作がオーバーフローを引き起こすかどうかを大まかに予測する方法があるかどうかを調べようとしています. 誤検知についてもそれほど心配していません。

計算に適した最小のスペースを使用できるようにしたい。計算がそのネイティブの境界内に留まる場合は、そこにとどめます。

例:これを検出し、結果が64 ビットの解像度を超える可能性Multiplying two 64 bit Integers if each are large enough will cause an overflow.がある場合にのみ、数値を自分の数値型にアップコンバートしたいと考えています。この実験では、符号付きの数値を使用します。

オーバーフロー/アンダーフローを検出する最も健全で効率的な方法は何ですか?

4

3 に答える 3

2

それについてのジョン・レガーの論文があります。

于 2011-11-08T23:37:40.557 に答える
0

ほとんどの場合、単純な計算を行い、オーバーフローが発生したかどうかを検出する方が簡単です (そして多くの場合は高速です)。計算を行うに可能性を検出したい特定の理由はありますか?

通常、計算が終了すると、オーバーフローが発生したかどうかを検出するのは非常に簡単です。単純な操作は安価であるため、オーバーフローが発生した場合でも、一部の作業をやり直す必要が生じたとしても、これによって計算のコストが大幅に増加することはありません。(ただし、通常はその必要さえありません)。

(非常に) 簡単な例を次に示します。2 つの符号なし 64 ビット数値を加算すると、合計をいずれかの加数と比較することでオーバーフローをチェックできます。したがって、計算後のオーバーフローの検出には、1 回の比較のみが必要です (非常に安価です)。

于 2011-11-08T23:42:22.327 に答える