使用JavaScript中的按位运算检查2的幂

我们需要编写一个JavaScript函数,该函数接受一个数字并确定其是否为2的幂。

例如-

f(23) = false
f(16) = true
f(1) = true
f(1024) = true

方法-

二进制形式的2的幂总是只有一位。像这样-

1: 0001
2: 0010
4: 0100
8: 1000

因此,在检查了数字是否大于零之后,我们可以使用按位hack来测试仅设置了一位。如下所示-

num & (num - 1)

示例

以下是代码-

const num1 = 256;
const num2 = 1024;
const isPowerOfTwo = (num = 1) => {
   if (num < 1) {
      return false;
   };
   return (num & (num - 1)) === 0;
};
console.log(isPowerOfTwo(num1));
console.log(isPowerOfTwo(num2));
console.log(isPowerOfTwo(1));
console.log(isPowerOfTwo(23));

输出结果

以下是控制台上的输出-

true
true
true
false