我原本应该制作一个简短的汇编程序代码,用于除以非幂2的数字。我的解决方案是在循环中减去分频器,循环次数是实际结果。有什么更快的吗?解决这个问题的常用方法是什么?
答案 0 :(得分:2)
Wikipedia上提到并详细介绍了许多算法。
答案 1 :(得分:2)
重复减法是一种非常低效的分裂方式。在最坏的情况下,N位除法可以进行O(2**N)
减法!!
@Johannes的答案有一个链接,可以为您提供比这更好的算法。
如果我被要求在汇编程序中实现除法,我可能会对现有的数字例程库进行大量搜索。这是一个需要大量专业知识来提出接近最佳代码的问题。
编辑:回应OP的评论:
这只是我现在用C ++制作一些程序而且我决定是否使用除法来解决一个问题或者用其他东西来加快它的速度。
我建议您只使用除法,并将其留给C ++编译器生成最有效的指令序列,以实现特定目标平台所需的结果。