可能重复:
Query about working out whether number is a power of 2
How to check if a number is a power of 2
我需要一个功能主体来完成这个原型:
bool isPOT(int x);
因此它将返回例如isPOT(3) = FALSE,但是isPOT(8) = TRUE
最漂亮/最简洁的算法是什么?最有效的方法是什么?
PS:我很惊讶我在这上面找不到这个问题,所以我完全希望有人能发现一些重复的东西。
PPS:能不能有人创造一个锅,NPOT,动力的两个标签?
发布于 2011-03-04 23:48:16
bool IsPOT(int x)
{
return (x > 0) && ((x & (x - 1)) == 0);
}
发布于 2011-03-04 23:45:59
不确定是否发生了这个确切的问题,但是检查很容易
x & (x - 1) == 0
https://stackoverflow.com/questions/5202447
复制