2的幂

给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

示例 1:

1
2
3
输入: 1
输出: true
解释: 20 = 1

示例 2:

1
2
3
输入: 16
输出: true
解释: 24 = 16

示例 3:

1
2
输入: 218
输出: false

代码

利用Integer.bitCount(int val)

1
2
3
4
5
6
public boolean isPowerOfTwo(int n) {
//排除不可能的数
if (n < 1) return false;
//技术整型n二进制表示中1的个数
return Integer.bitCount(n) == 1;
}

使用余数判断

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public boolean isPowerOfTwo(int n){
//排除不可能的数
if (n < 1) return false;
//当n大于1时
while (n > 1) {
//得到除以2的余数
int remainder = n % 2;
//如果余数不为0,则返回false
if (remainder != 0) return false;
//无符号右移1位,相当于除以2
n >>>= 1;
}
return true;
}