当我除以零时会发生什么?

时间:2013-12-30 15:31:58

标签: math computer-science divide-by-zero

现在我不是在问除以零的数学答案,我想知道我的计算机在尝试除以零时的作用是什么?

根据我们看到的等级,我可以看到不同的答案? 看一个高级别我希望语言规范可能只是说“嘿,你不能这样做会引发错误”

查看汇编级别,当我们尝试除以0时,CPU是否会尝试调用除法指令?

如果这样做,我们将把我们带到机器代码级别。现在发生了什么?

既然如果没有发生并且我们强迫它发生,结果会是什么?

2 个答案:

答案 0 :(得分:4)

我认为你问的是如果我们在分母中使用0进行二元除法算法会发生什么。

算法将进入无限循环,商将变得越来越大,直到耗尽所有可用内存。

答案 1 :(得分:2)

  

查看汇编级别,当我们尝试除以0时,CPU是否会尝试调用除法指令?

获取和解码Yep指令。那么会发生什么?除数被发现为零,过程停止做它正在做的事情。它抛出某种异常,管道(如果有的话)被刷新并且很可能控制跳转到某些预定义的错误处理代码 - 通常操作系统控制一个称为中断向量的机器级跳转表(或者这可能是一个单独的中断向量表)。

然而,有许多架构,错误处理等方面各不相同。英特尔x86至少遵循上述程序。

  

如果这样做,我们将把我们带到机器代码级别。现在发生了什么?

我不知道这意味着什么。从CPU的角度来看,它是所有机器代码级别。