可能的重复:
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);

所以它会返回eg ispot(3)=false,但ispot(8)=true
最漂亮/简洁的算法是什么?什么是最有效的?
附言:我很惊讶我不能在上面找到这个问题,所以我完全期待有人能发现一些重复的。
PPS:有人可以创建pot,npot,power of two标签吗?

最佳答案

bool IsPOT(int x)
{
    return (x > 0) && ((x & (x - 1)) == 0);
}

07-28 04:43