一、问题分析
要判断一个数是否为2的幂,如果该数小于等于0,则一定不是2的幂,如果该数大于0,我们可以知道如果某个数是2的幂的话,则它的二进制表示一定是最高位是1,其余为全是0,所以我们可以想到,如果对这个数字减1,得到的数最高位是0,其余位全是1,所以可以得到如果一个数是2的幂,则有(n&(n-1))=0,所以可以将程序如下实现。
二、代码实现
class Solution {
public:
bool isPowerOfTwo(int n) {
if(n>0&&((n&(n-1))==0))
return true;
return false;
}
};