2011-08-11 3 views

答えて

6

Wikipediaの記事の答え:-)それらを使用しない:正の数、商ので、信号をトリガ

...、 表現ではありません。

INT_MIN/-1 = -INT_MIN 
      = INT_MAX + 1 
      => invalid number 
      => floating point exception (FPE) 
1

あなたはwikiページを読んでいますか?おそらくFPEですが、浮動小数点例外ではありません。

SIGFPEは必ずしも浮動小数点 算術演算を必要としないものの、 後方互換性を壊すことなく、その名前を変更する方法はありません。

1

このページにリンクすると、「SIGFPEは浮動小数点演算を必ずしも必要としませんが、下位互換性を損なうことなく名前を変更する方法はありません。

信号が得られる理由は、2の補数が働くためです。 16ビットの2の補数(例えば)の範囲は、-32768..32767である。

つまり、65,536の可能な値がその範囲にマップされます。 INT_MINを無効にしようとすると、正しい値を示す表現がありません(32768は利用できません)。

Thはすべての2の補数の場合です.8ビットは-128..127、32ビットは-2147483648..2147483647となります。

これらのすべてのケースでは、INT_MINには正の同等品がありません。

興味深いことに、ISO C(1の補数と符号/大きさ)で許される他の2つのコード体系は、正の値と負の値の間に直接的な1対1のマッピングを持っています。同様に興味深い、ほとんど-1は