jianhong_wu 发表于 2015-8-1 16:10:08

如何用加减法实现除法?已解答。

Goem-顺德:
记得当时面试的时候,老板就是问,如何不用乘除法拆分一个数?

★坚鸿-深圳:
你有什么方法?

Goem-顺德:
只是因为单片机没乘除法指令。加减咯。100/10就相当于100-10然后寄存器再+1。循环判断到不够减为止,不够减就是余数了。寄存器的值就是商。乘法也就差不多。


★坚鸿-深圳:
但是我感觉这种方法跟直接用乘除没差别。因为当我们写下100/10时,可能内部的C编译器就是按照你的那种思路来处理具体的运算的。


Goem-顺德:
当你遇到汇编没有乘除指令就知道有没用了。


★坚鸿-深圳:
只要是C语言,即使汇编没有乘除指令,我相信C编译器也是大概按照你的思路和方法来处理,所以应该没有本质的差别。也不会节省什么运算时间。但是你给大家分享的算法基础很好。


阿浩-浙江:
乘除法不可以可以用移位代替的吗 ?

★坚鸿-深圳:
只能是2的倍数才可以。

阿浩-浙江:
哦, 原来如此,没考虑周全。


清风明月 发表于 2015-8-6 08:16:01

估计他们一直用的汇编~
页: [1]
查看完整版本: 如何用加减法实现除法?已解答。