個人的なプロジェクトとして、私は自分のペットプロジェクトに任意の精度の数値型を実装しようとしています。符号なし計算がオーバーフローする可能性がある場合は、事前にどのように決定するのですか?
私は既にこれについて一般的で、テストされた、堅牢なライブラリについて知っています。私は、自己改善教育プロジェクトとしての解決策に取り組んでいきたいと考えています。
私は地域を研究し、にはいくつかの方法がある場合、私は実際に計算を行う前に、操作がオーバーフローを引き起こすかどうおおよそ予測把握しようとしています。私は偽陽性についてもそれほど心配していません。
私は、計算に適した最小のスペースを使いたいと考えています。計算がその本来の範囲内にとどまるなら、私はそこに保持します。
例:Multiplying two 64 bit Integers if each are large enough will cause an overflow.
結果をとすると、が64ビットの解像度を超えた場合にのみ、これを検出して番号を自分の番号タイプにアップコンバートします。この実験では、とと署名して作業します。
オーバーフロー/アンダーフローを検出するための最も一般的で効率的な方法は何ですか?これらの数字のオーバーフローを引き起こす、あなたがオーバーフローのために良いチャンスを持っている:
似たようなプロジェクトを試みたことはありませんでしたが、あらかじめオーバーフローについて知っている点は何ですか?より小さなnmbersのための最適化はすばやく、またはそれほど明白ではありませんか?正確な解決策が必要な場合や、誤ったオーバーフローアラームを発生させる可能性のあるものを受け入れる場合 – vmatyi
あなたの質問とあなたのコメントは、答えの1つに、あなたが署名付きオペランドを使用していると言いますが、タイトルにはunsignedと書かれています。どちらですか?符号なし算術演算はおそらく扱いが簡単で、おそらく任意の精度の数値を扱うのに適しています。 –
ベースを表す符号なし64ビット長の配列のように、符号なしのプリミティブ型を基本コンポーネントとして使用して、符号付きの任意の計算を実行します。 –