オーバーフローとは
オーバーフローとは、あふれている、または、あふれ出たもの、という意味の英単語です。ITの分野では、数値の計算結果がその格納領域に収まる範囲を超えること(算術オーバーフロー/桁あふれ)や、与えられたデータが多すぎて指定の領域に収まりきらないこと(バッファオーバーフローなど)を意味します。
オーバーフローのあれこれ!
オーバーフローが起きるかどうかは桁の大きさの問題です。符号付き整数の場合には、負数の値が下限を超えた場合(絶対値の桁数が上限を超えた場合)にも発生します。また、浮動小数点の場合には指数部の大きさが上限値よりも大きくなった場合に、それ以上大きな値を表すことができずオーバーフローとなります。
○バッファオーバーフロー(buffer overflow)
バッファオーバーフローとは、コンピュータプログラムの動作異常の一つのことです。あるデータの受け取りや保管のために用意された領域(バッファ)に、想定以上の長さのデータを書き込んでしまった場合、データが溢れてしまいます。その溢れたデータが隣接する領域を不正に書き換えてしまうことを意味します。また、溢れたデータによって引き起こされる予期しない動作のことを意味する場合もあります。
○アンダーフロー(underflow)
アンダーフローとは、コンピュータで実数の計算をした結果、絶対値が小さすぎて正確に表現・計算できなくなってしまうことを意味しています。
○算術オーバーフロー
数値データを格納するメインメモリ上の領域やCPU内部のレジスタは、一つの数値を決まったデータ量で表すようにできています。つまり、取り扱える数値の桁数に上限があるのです。数値を計算した結果がその上限を超えると、正しく格納・表現できなくなってしまうことを算術オーバーフローといいます。。例えば、1バイトの符号なし整数型は0から255までの整数を表現できます。つまり、「150×2」という計算の結果は上限を超えてしまいオーバーフローとなるのです。
オーバーフローが発生した際の対処方法として、例外やエラーを出力してプログラムを停止する場合と、上限を超えたことを示す特殊な値を用いる場合、単に無視する場合などがあります。
「オーバーフロー」の意味が分かったところで、次は例文を見ていきましょう。
〈例文〉