Algorithm 位模计算

Algorithm 位模计算,algorithm,bit-manipulation,modulus,Algorithm,Bit Manipulation,Modulus,给定两个数字a和b,其中b的形式为2k,其中k未知。使用位运算符计算a%b的有效方法是什么。a和(b-1)==a%b(当b为2^k时) 当问家庭作业问题时,向我们展示你的一点努力。你的想法是什么?哪里有困难?显而易见的解决方案是,只要a是正的,就可以工作,但是通过纯粹的位篡改来实现负操作数的正确行为将是复杂的。最有效的方法是使用DIV,一条在DX寄存器中具有模数的汇编指令。为什么这是一个更低效的方式!使用DIV实际上是效率最低的方法。DIV(即使在现代x86处理器上)使用的逻辑要多得多,运行速度

给定两个数字a和b,其中b的形式为2k,其中k未知。使用位运算符计算a%b的有效方法是什么。

a和(b-1)==a%b(当b为2^k时)


当问家庭作业问题时,向我们展示你的一点努力。你的想法是什么?哪里有困难?显而易见的解决方案是,只要a是正的,就可以工作,但是通过纯粹的位篡改来实现负操作数的正确行为将是复杂的。最有效的方法是使用DIV,一条在DX寄存器中具有模数的汇编指令。为什么这是一个更低效的方式!使用DIV实际上是效率最低的方法。DIV(即使在现代x86处理器上)使用的逻辑要多得多,运行速度也比按位逻辑运算代码慢(计算处理器时钟周期时)。然而,这是“最简单”的解决方案。
ex. a = 11 (1011b), b = 4 (0100b)
11 / 4 = 2 R3
11 % 4 == 11 AND (4-1)
11 (1011b) AND 3 (0011b) == 3 (0011b)