判断一个数是不是2的n次方
问题
给定一个整数,编写一个函数来确定它是否是2的幂。
示例 1:
Input: 1
Output: true
Explanation: 20 = 1
示例 2:
Input: 16
Output: true
Explanation: 24 = 16
示例 3:
Input: 218
Output: false
代码
二进制表示只有一个 1 存在。
public boolean isPowerOfTwo(int n) {
return n > 0 && Integer.bitCount(n) == 1;
}
利用 1000 & 0111 == 0 这种性质,得到以下解法:
public boolean isPowerOfTwo(int n) {
return n > 0 && (n & (n - 1)) == 0;
}