我正在玩C ++,目的是学习更好地编写高效的代码和算法。我试图解决一个非常微不足道的问题,一个整数可被2整除多少次我想出了以下方法:
int timesTwo1 ( int x ) {
long s = clock();
int count = 0;
while( x%2 == 0 && (x>>=1) && (++count) && ( (x ^ INT_MAX) & 1 != 0 ) );
long e = clock();
std::cout << "timesTwo1 : " << (e - s) / double(CLOCKS_PER_SEC) * 10e6 << "us\n";
return count;
}
int timesTwo2 ( int x ) {
long s = clock();
int count = 0;
while ( x%2 == 0 && (x/=2) && (++count) );
long e = clock();
std::cout << "timesTwo2 : " << (e - s) / double (CLOCKS_PER_SEC) * 10e6 << "us\n";
return count;
}
在我的机器上ubuntu 14.04LTS 64位intel处理器5i系列执行时间需要10us(微秒)我看到timesTwo2更具可读性但哪一个更有效?感谢