Given an integer, write a function to determine if it is a power of two.
Example 1:
Input: 1 Output: true Explanation: 20 = 1
Example 2:
Input: 16 Output: true Explanation: 24 = 16
Example 3:
Input: 218 Output: false
-----------------------------------------------------------------------
第一种方法:
2的幂次只有一个位是1,其它位都是0
那么n&(n-1)==0(如果n为2的幂次的话)
public boolean isPowerOfTwo(int n) {
if(n<=0) return false;
return (n&(n-1)) == 0;
}
-----------------------------------------------------------------------
第二种方法:
public boolean isPowerOfTwo(int n) {
if (n <= 0) return false;
// 非 2的幂次的整数,它们除以2的过程中会变成大于1的奇数
// 2的幂次 最终都会变成1
while(n%2 == 0){
n/=2;
}
return n == 1;
}