0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ゼロ除算ってなんや

Posted at

ここでゼロ除算の脆弱性(Divide By Zero)について「わかりやすく」説明してみたいのですが、はたしてうまく説明できるでしょうか・・・

まずゼロ除算ってなんやというところです。
これを読んでいるオジサンたちは、算数の時間に
Nx0=0 
そして、
N÷0=0 

と習った人もいるんじゃないでしょうか。

数学の世界だと「=」って「等号」って言いますよね。
=の右側と左側は一緒(等しい)ですよって意味になります。

で、たとえばですね
6x3=18 という式があるとして、
6=18÷3 と置き換えたりできるっていうの習いましたよね?
3=18÷6 でもいいです。

割り算だと
6÷3=2
2x3=6
って習います。

それじゃあこの
N÷0=0 
で同じことをやってみたいんですけど
当てはめてみると
N=0x0
0=Nx0
えっこれってN=はかならず0じゃん
ってなりますよね

現在の数学だとこれは「未定義」と習います。
なにかをゼロで割ることは「できない」が正解なのですね。

で、コンピュータというのは計算機ですから、出来ないことをやれって言われると停止することがあるわけです
もちろんプログラミングのなかでそのようなことが発生しないようにしてはいるのですが、

試しにいまお持ちのスマホの電卓で6÷0を計算させてみてください。きちんと作ってあるおかげで「ゼロ除算はできません」旨の回答が得られるかと思います。

ところが思いがけずそのような計算をさせてしまうようなバグを残したままリリースされるプログラムもあるわけで、そういったバグのことを「ゼロ除算の脆弱性」と呼称しているわけです。

今回のは、ちょっと自信ないんですけど、こんな説明でご理解いただけますでしょうか。
あるいは「ソコ間違ってんで!」とかRFC(Request for Comments)です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?