- 一般方法
public boolean powerOf2(int n) {
int k = 1;
while (k <= n) {
if (k == n) {
return true;
}
// k = k*2;
k = k << 1;
}
return false;
}
- 更高效的方法:
/**
* 2的二进制表示为0010B,4的二进制为0100B
* 若是对其减1,二进制则变为01B,0011B
* 再使用&进行位操作 n&(n-1)=0
*/
public boolean powerOf2_2(int n) {
if (0 == (n&(n-1)) && n >= 1) {
return true;
}
return false;
}