我有这行代码:
base_num = (arr[j]/base)%256;
此行在循环中运行,操作“/”和“%”需要大量资源和时间来执行。我想更改此行并应用位操作以最大化程序性能。我该怎么做?
谢谢。
最佳答案
如果 base 是 2 的 n 次方,则可以用向右移动 n 位来代替除法。然后,由于取一个整数的 mod 256 等同于取它的最后 8 位,你可以用 0xFF 与它。或者,如果您将 AND 与 256*base 进行运算,然后将 n 向右移位,则可以反转操作。
base_num = arr[j] >> n;
base_num &= 0xFF;
当然,任何半正经的编译器都应该能够为您完成这项工作。
关于c++ - 如何用位运算代替取模和除法运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13569195/