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
这个题目考察的为位运算,题目要求写一个函数来判断是不是二的幂,主要有两种方法:
1)
/*
将整数和其相反数相与,效果即为只留下最左边的一,如果为二的幂则字符串中只有一个1,如果不是的话就有多个1
*/
class Solution {
public boolean isPowerOfTwo(int n) {
return n > 0 && (n & -n) == n;
}
}
2)
/*
这个方法为将最大的数相余n,如果n为二的幂的话,那么相余之后必定为0,即可以判断
/*
class Solution {
public:
bool isPowerOfTwo(int n) {
return n > 0 && (1 << 30) % n == 0;
}
};