私は加算と減算の違いを得ることはありません、私はそれを見てみましたが、まだ答えはありません。最も簡単な方法で説明してください。整数の減算やオーバーフローの原因になるのはどのような条件ですか?私はdiffrenceを取得しません
追加するとき、それを格納するために使用された整数型の最大サイズを超えています。整数のオーバーフローが発生すると、解釈された値は最大値で「包まれ」ているように見え、最小値で再開されますが、それを防ぐための条件は何ですか。
ありがとうございました。
私は加算と減算の違いを得ることはありません、私はそれを見てみましたが、まだ答えはありません。最も簡単な方法で説明してください。整数の減算やオーバーフローの原因になるのはどのような条件ですか?私はdiffrenceを取得しません
追加するとき、それを格納するために使用された整数型の最大サイズを超えています。整数のオーバーフローが発生すると、解釈された値は最大値で「包まれ」ているように見え、最小値で再開されますが、それを防ぐための条件は何ですか。
ありがとうございました。
関連性:http://teaching.idallen.com/dat2343/10f/notes/040_overflow.txtこれは、x86のキャリー(符号なし)フラグとオーバーフロー(署名済み)フラグです。
MIPSについては、そのことを念頭に置いてお読みください。add
は、x86がOFを設定するときは常にトラップします。
MIPSでは、(a+b) < a
符号なし比較を使用して加算からキャリーアウトを得ることができます。またはサブの場合(a-b) > a
は署名されていません。
subu
の後に符号付きオーバーフローが検出されたと思います。(a-b) > a
符号付き比較。したがって、a-b
〜にはがオーバーフローしないようにするには、ラップされていない結果がINT_MIN〜INT_MAXになるように入力を選択します。それだけです。