《汇编语言》王爽附注5 公式证明当n<0时貌似有漏洞...
题目太长了打不全,但是公式我看懂了:1.L<= 65535
2.rem(H/n)<=n-1
由2有:
3 rem(H/n)*65536<=(n-1)*65536
4. rem(H/n)*65536+L<=(n-1)*65536+65535
5. [rem(H/n)*65536+L]/n<=[(n-1)*65536+65535]/n
6. [rem(H/n)*65536+L]/n<=65536-(1/n)
所以[rem(H/n)*65536+L]/n不会产生除法溢出
因为n为除数,所以不会为0,所以65536-(1/n)<=65535
但是细细一想,如果n为负数的话呢?那65536-(1/n)岂不是大于了一个16位寄存器了?
而且如果n比较大的话如n = 3时,65536 - 1/3也同样大于65535,感觉有些错误...
看过汇编语言的童鞋帮帮忙,能不能解析下这个问题,再爆个红贴...