Ole*_*aKL 6 c c++ module bit-manipulation division
我有这行代码:
base_num = (arr[j]/base)%256;
Run Code Online (Sandbox Code Playgroud)
该行在循环中运行,操作"/"和"%"需要大量资源和时间来执行.我想更改此行并应用位操作以最大化程序性能.我怎样才能做到这一点?
谢谢.
如果base是2的n次幂,则可以用n的右移位替换除以它的除法.然后,由于取整数的mod 256相当于取其最后的8位,因此可以将其与0xFF进行AND运算.或者,如果您使用256*base然后向右移位n,则可以反转操作.
base_num = arr[j] >> n;
base_num &= 0xFF;
Run Code Online (Sandbox Code Playgroud)
当然,任何半合半的编译器都应该能够为你做到这一点.
| 归档时间: |
|
| 查看次数: |
608 次 |
| 最近记录: |