闲聊王爽的除法不溢出问题!
看到王师傅在书中说了个除法不溢出的方法。心里一惊,心想:除法溢出自然是被除数太大,除数太小,造成商太大低位的放不下,才溢出,(余数自然小于除数也就不存在放在高位放不下)就想探个究竟是怎么把放不下的放下了。看书上证明来证明去,简化了就是化为两截来除,就象小孩子只会个位数相加不会十位数相加。把个位和十位都当成个位单独加,再组合起来。思路是很好的。可我总觉得思路很好,说法不对。。。如果其他寄存器都在工作状态(都保存着有用数据),按王师傅的方法最后(组合后)的商如果原来就放不下,现在还是放底位放不下。除非再加存储单元(包括寄存器),,不要说芯片产方没考虑到。。。也不说我假设的其他寄存器都在用。。。但说他这说不溢出就不准确,除法在运算时不存在溢出,只在存商时。。。王师傅在最后也没继续说怎么把商组合起来放。。。如果组合后还是按除法指令那样放不还是溢出。。。我觉得还是把这个问题说成是“怎么避免除法中溢出而造成结果不准确“比较确切些。。。还比我拎很多东西拎不动,你找个人帮我拎点,东西是拎走了。可这么多东西我还是拎不动的。。。
主要这个问题我今天搞了一天,开始以为真的会不溢出,左看右看,前看后看,证明来证明去,结果是搞明白了,是把商要多加个地方放。
感觉王师傅这一本书都通俗易懂,惟有这个问题把人给饶惨了。。。
不过办法还是好办法。。。很实用。。。
只是把我饶惨了。。。