0除算

読み:ゼロじょざん
外語:zero division , divide by zero
品詞:さ変名詞

割る数(除数)を0とした除算のこと。ある数値を0で除算すること。

これを式にすれば、a÷0となるが、しかし数学においてこの式は未定義である。

未定義の理由

a÷0=xである時、もしaが0以外なら、xがどのような数であってもこの式を満たすことはできないので、不能である。

また逆にaが0なら、xがどのような数であってもこの式が成立するため、不定となる。

コンピュータプログラムにおいては、0除算は例外あるいはバグの一つである。

CPUの計算機を使う整数演算と、そのコプロセッサとなるFPUを使う実数演算(浮動小数点演算)とで、挙動は異なる。それぞれの動きは、プロセッサごとに異なっている。

プログラミングを行なう際、処理に割り算がある場合に割る数のチェックを行なえば防げるバグであるが、このチェック処理は忘れがちである。

80x86の場合

80x86からPentium、Coreシリーズまでは、次のように動作する。

  • 整数演算 ‐ 0除算例外を発生させる
  • 実数演算 ‐ +∞、−∞、NaNのいずれかの値を返す

FPUはコプロセッサであるためか、FPUで0除算が行なわれてもCPU本体にシグナルは発生しない。

80x86シリーズ初のFPU、8087の仕様は、その後IEEE 754となった。IEEE 754準拠の実装では、a÷0で、a>0なら+∞、a<0なら−∞、a=0ならNaN(非数値)、とする取り決めがある。但しこの結果は、数学的には誤りだろう。