Given an integer, write a function to determine if it is a power of two.
对于小于等于0的数,他们肯定不是2的幂指数倍。考虑大于等于零的数,当然可以循环暴力求解看是否能始终被二除,但是这里有一种更好的方法对于一个正数来说,如果一个数是2的幂,那么他肯定是1000000这种形式,对于这个数,减去1,可以得到011111111,可以看到这两个数每个位都是不一样的,只要检查两个数是否相与为零就好了。
class Solution {
public boolean isPowerOfTwo(int n) {
if(n<=0)
return false;
else
return ((n-1)&n)==0;
}
}