我有一个128位无符号整数a和一个64位无符号整数B.计算A % B
的最快方法是什么——即a除以B的(64位)余数?
我希望用C或汇编语言来实现这一点,但我需要针对32位x86平台.不幸的是,这意味着我不能利用编译器对128位整数的支持,也不能利用x64体系 struct 在一条指令中执行所需操作的能力.
Edit:
谢谢你迄今为止的回答.然而,在我看来,建议的算法会非常慢——执行128位乘64位除法的最快方法不是利用处理器对64位乘32位除法的本机支持吗?有人知道有没有一种方法可以用几个较小的分区来执行较大的分区?
Re: How often does B change?个
我主要感兴趣的是一个通用的解决方案——如果a和B每次都可能不同,你会进行什么计算?
然而,第二种可能的情况是,B的变化不像A那么频繁-可能有多达200个B除以每个B,在这种情况下,您的答案会有什么不同?