除以零是计算领域最臭名昭著的错误条件之一。然而,即使在数字时代之前,除以零的计算也可能导致机械计算器因这个不可能、或更准确地说,这个“未定义操作”而陷入混乱。数学和科学爱好者VixhalX上分享的一段视频剪辑提供了一个鲜明的例子,如下嵌入所示。这台1950年代的技术奇迹在奉命踏入数学的遗忘之境后,其齿轮疯狂旋转,仿佛在尖叫“给我上油,把我关掉”。

Cover Image

1950年代,机械计算器没有现代机器的安全检查机制。所以当有人试图用一个数除以零时,计算器不会显示错误。相反,它会陷入……

英特尔里程碑式的4004微处理器1971年发布,其著名之处在于被设计为计算器的核心。然而,即使是这颗芯片也没有设计用于处理错误除以零指令/条件的硬件。实际上,4004有限的指令集甚至本身就不支持简单的除法指令。

尽管如此,首款采用英特尔芯片驱动的商用产品——Busicom 141-PF计算器,包含了用于检测除以零并显示错误信息的固件。这远比崩溃、陷入无限计算循环或表现出其他意外行为要好得多。

硬件级别的除以零异常直到英特尔开创性的8086处理器1978年推出后才出现。这款著名的首款x86架构CPU引入了原生的DIV指令,并在检测到除数为零时引发DE异常(一种硬件响应)。

英特尔的举措在一定程度上帮助保护了计算应用免于受除以零问题困扰。然而,在解决此类问题的道路上,另一个重要步骤发生在1985年IEEE 754标准增加了浮点处理功能,产生InfinityNaN而非导致崩溃。这一功能将首次出现在主流硬件中,始于英特尔的80387数学协处理器

2025年,虽然现代操作系统内核可以在硬件层面捕获除以零异常,防止崩溃和意外行为,但如果开发者没有预见到这种情况,某些应用和游戏仍可能存在问题。就在几个月前,《魔兽世界》(World of Warcraft)玩家在Reddit和论坛上的发帖表明,在Raptor Lake/Refresh CPU上运行该游戏时,INT_DIVIDE_BY_ZERO崩溃在2025年早些时候仍在发生。

但是,如果你在2025年遇到应用或游戏崩溃,也许在重启时,可以想想那台可怜的1950年代机械计算器。


文章标签: #除以零 #机械计算器 #英特尔处理器 #IEEE754 #硬件异常

负责编辑

  菠萝老师先生 

  让你的每一个瞬间都充满意义地生活,因为在生命的尽头,衡量的不是你活了多少年,而是你如何度过这些年。