- ベストアンサー
オーバーフローについて教えてください。
複数のIT用語辞典で調べるとオーバーフローとはデータ型が扱える範囲の上限を超えてしまうこととありました。 とするとint型の場合 32,767を超えることはオーバーフローと言うのでしょうけど、–32,768を下回ることはなんと言うのでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
IT用語も、常に同じ意味で使われるとは限りません。 上に溢れる「オーバーフロー」と、下に溢れる「アンダーフロー」です。 この上下の基準が変われば、値の変わります。 整数の場合 最大値から最小値までが「上下」と考えれば、最小値より小さくなってしまうのは「アンダーフロー」です。 精度で考えれば、負の最小値(絶対値が最大)より小さくなることは、取り得る値を越えてしまうので「オーバーフロー」です(特に「負のオーバーフロー」といったりします)。「アンダーフロー」は最小精度の1より小さくなってしまうことです。 検索でいくつかの「IT用語」を見てみましたが、「解説」と言えるほど詳しくは書いてないように思えました。 大体の意味を掴んだら、より詳しい解説をしているサイトとか本とかで調べなおすのがいいかと思います。
その他の回答 (5)
- takuwanosho
- ベストアンサー率36% (59/163)
あははは、#2 : kemee さん、突っ込みありがとう、16bit で説明してましたね失敬失敬。 ついでに補足しておくと、この辺の言い回しはCPUでの動作のときに良く耳にする言葉です。 CPU演算時に、オーバーフローフラグが立つ、ボロービットが立つとか、いう言い回しがあるんです。 演算ビット桁数を超えた時に立つフラグのことで、こちらの方を調べると面白いかもしれません。
- hi_kurokun
- ベストアンサー率45% (20/44)
ここに http://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0 このような記述がありました。 オーバーフロー/アンダーフロー 最大値を超えた場合はオーバーフロー、絶対値の最小より小さい場合はアンダーフローという。 (実数の)指数部は・・・の範囲が表現できる。 これを下回れば算術アンダーフロー、上回れば算術オーバーフローとなる。 これが正しい表現かは不明です。
お礼
ありがとうございます。
マイナス側の桁あふれは、アンダーフローと言うこともあります。 またすでに指摘されているように、int型の大きさは処理系によってまちまちで、一定ではありません(規定もない)。最近になって、int64のように長さが解る名前が付く場合も出てきましたが、ただのintではそれが16bitか32bitか、あるいは8bitか64bitかは解りません。これはintに限らず他の型、例えばfloatが何ビット長かの規定もないので、同じことが言えそう…
お礼
回答ありがとうございます。 自分が調べたアンダーフロー定義は値が小さすぎて、正しい結果が得られない場合だそうです。 値が小さいとは0に近いということでdouble、float型で起こるということです。詳しい数字は分かりませんが、0.0000000001というような数字は正しく表せないという事で、オーバーフローは0から遠すぎて表すことができないという意味だと思います。色んなIT用語辞典を調べると値が大きい場合とか表現してるので誤解をうむと思いました。
- kmee
- ベストアンサー率55% (1857/3366)
#1さん、32bitだと+2147483647/-2147483648ですよ。 32767/-32768だと16bitですね。
- takuwanosho
- ベストアンサー率36% (59/163)
32bit の二進化システムで二の補数をマイナスとするsigned型とした場合。 扱える数字は十進表記で 32767 ~ -32768 ですが、十六進で書くと 7FFF ~ 8000 です。 十進表記で、32767 を越えた 32768 は、十六進表記で 8000、 十進表記だと -32768。 十進表記で、-32768 を下回る -32769 は、十六進表記で 7FFF、十進表記だと 32767。 見て頂いて解る通り閾値を越えると正負が逆転します。 この事をオーバーフローと言いっていますので、上下どちらも一緒です。 因に、前置きが長くなっていますが、これらには前提条件があります。 例えば int が 32bit ではないシステムは沢山あります。 また、二進で二の補数をマイナスとしない物も沢山ありますし、これらは機種依存です。 実はこの前提条件によりオーバーフローの閾値や結果が変わってきます。 今回は上記規定の場合にはこうなりますと言う話しです。
お礼
ありがとうございます。