使用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