判断一个数是不是2的n次方

判断一个数是不是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;
}