2 的幂

一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。

  • 输入:n = 1

  • 输出:true

  • 解释:2^0 = 1

  • 输入:n = 16

  • 输出:true

  • 解释:2^4 = 16

1
2
3
4
5
6
7

let isPowerOfTwo = function(n) {
// 一个数 n 是 2 的幂,当且仅当 n 是正整数,并且 n 的二进制表示中仅包含 1 个 1。

// n 需要是正数且 n 与 n-1 二进制 相比 差别在于在唯一的 1 之后按位取反, 4 = 0100, 3 = 0011, & 运算后得 0
return n > 0 && (n & (n - 1)) === 0;
};