yoo*_*er8 12 theory divide-by-zero
要清楚,我不是在寻找NaN或无穷大,或者问x/0应该是什么答案.我正在寻找的是:
基于分工是如何在硬件中执行的(我不知道它是怎么做的),如果师们用的0除数来执行,处理器只是通过操作喝着十分满意,你会来的吧?
我意识到这很大程度上取决于股息,所以对于一个具体的答案,我问这样:如果计算机遵循标准的分工操作,计算机会吐出什么42 / 0?
更新:
我会试着更清楚一些.我问的是在位级别用数字完成的实际操作是为了达到解决方案.操作的结果只是位.当发现除数为零时,NaN和错误/异常发挥作用.如果分裂实际发生了,会出现什么位?
Jon*_*rdy 12
它可能不会停止.整数除法可在线性时间通过重复的减法来进行:为7/2,则可以从7减去2共3次,所以这是商和余数(模数)为1.如果要提供一个将0除以这样的算法,除非有一个机制来阻止它,算法不会停止:你可以无限次地从42中减去0而不会到达任何地方.
从类型的角度来看,这应该是直观的.未定义的计算结果或非停止一个是⊥("底部"),未定义的值栖息每一种类型.除零没有在整数上定义,因此它应该通过引发错误或未能终止来正确地产生⊥.前者可能更可取.;)
其他更有效(对数时间)除法算法依赖于收敛于商的序列; 对于0的红利,据我所知,这些将无法收敛(即,未能终止)或产生0.请参阅维基百科上的分部.
浮点除法同样需要一个特例:划分两个浮点数,减去它们的指数并对其有效数进行整数除法.相同的底层算法,同样的问题.这就是为什么在IEEE-754中存在正负无穷大的表示,以及有符号零和NaN(对于0/0).