请赐教,请帮忙看一下面试题,
optimize the follow code
使用<< >> & | ~
int a=b*4
int a=b*72
int a=b%1
int a=b%16
int a=(b+c)/2
int a=(b*3)/8
题目大概就是怎么样计算才高效的意思,c++新手,请教一下大家啊,谢谢
[解决办法]
int a=b*4。。。。。 a = b << 2 (左移一位就是乘2右移一位就是除二)
[解决办法]
int a=b%1。。。。 a = b & 0
[解决办法]
int a=b%16。。。。。。a = b & 0x0f
[解决办法]
其实可能编译器自己就会优化,比如VC6下面
m = n * 4;
m = n << 2;
生成的汇编代码都是
shl eax, 2
[解决办法]
int a=b%16 为 a = (b -( ( b >> 4 ) <<4))
[解决办法]
int a=b*72
....int a = b<<6 + b<<3 (估计是这样吧)
[解决办法]
int a = b<<6 & b<<3
[解决办法]