2 的幂-简单
难度:简单
题目描述:
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例:
输入: 1;
输出: true;
解释: 20 = 1;
输入: 16;
输出: true;
解释: 24 = 16;
1
2
3
4
5
6
2
3
4
5
6
解题思路:
var isPowerOfTwo = function (n) {
if (n === 0) return false;
while (n >= 2) {
n = n / 2;
}
return n === 1;
};
1
2
3
4
5
6
7
2
3
4
5
6
7
2 倍数的整数最高位必为 1;
num&(num-1) 可以删去该数二进制最后一位 1.因此我们只需要把 n(n-1),然后判断是否为 0,为 0 则是 2 的幂,否则不是。
var isPowerOfTwo = function (n) {
return n > 0 && !(n & (n - 1));
};
1
2
3
2
3