检查一个整数是不是2的幂次方的最快方法# JobHunting - 待字闺中
w*s
1 楼
大概很多人都知道:
return x_ && (x_ & (x_ - 1)) == 0;
不过随着科技的进步,这个方法也落伍了,现在有了比这个还快2倍不止的方法:
return __builtin_popcount(x_) == 1;
经测试,popcnt在cpu的指令集支持下,比前方法快2.5倍。
return x_ && (x_ & (x_ - 1)) == 0;
不过随着科技的进步,这个方法也落伍了,现在有了比这个还快2倍不止的方法:
return __builtin_popcount(x_) == 1;
经测试,popcnt在cpu的指令集支持下,比前方法快2.5倍。