【发布时间】:2012-11-26 16:40:13
【问题描述】:
我有这行代码:
base_num = (arr[j]/base)%256;
这一行循环运行,操作“/”和“%”需要大量资源和时间来执行。我想更改此行并应用位操作以最大化程序性能。我该怎么做?
谢谢。
【问题讨论】:
-
base是常数,还是会改变? -
如果编译器有价值,它会在比
%更快的每个平台上用&0xFF替换%256。base的值是多少? -
您可以将
base_num声明为 8 位(无符号)整数 -
基础变化值:base = (int)pow(256,(float)i);
-
@user1756004 呃,这不应该是这样计算的。
int base = 1 << (8*i);。但这会溢出相当小的i。unsigned long long可能是更好的选择。
标签: c++ c module bit-manipulation division