给定一个整数,编写一个函数来判断它是否是 2
的幂次方。
示例
输入: 1
输出: true
解释: 2的0次方 = 1
输入: 16
输出: true
解释: 2的4次方 = 16
输入: 218
输出: false
计算该数在二进制1的个数
- 如果等于1,则是2的幂
- 否则不是
let isPowerOfTwo = n => {
return n > 0 && countOf1(n) === 1;
};
// 手写,不就是计算1的个数嘛
let countOf1 = n => {
let cnt = 0;
while (n !== 0) {
cnt++;
n &= (n - 1);
}
return cnt;
};
console.log(isPowerOfTwo(1));
console.log(isPowerOfTwo(16));
console.log(isPowerOfTwo(218));
func isPowerOfTwo(n int) bool {
return n > 0 && bits.OnesCount32(uint32(n)) == 1
}
class Solution {
public boolean isPowerOfTwo(int n) {
return n > 0 && Integer.bitCount(n) == 1;
}
}