【算法】判断一个正整数是否为2的整数次幂

2022/03/08 22:50:04

按位与运算

思路

与运算是将两个数转换为二进制进行比对,同样位都为 1 则为 1,否则为 0。

对于一个正整数 x,如果它是 2 的整数次幂则它有以下两个特性:

  • 它的二进制值只有最高位为 1,其余位均为 0。
  • x - 1 的二进制值只有最高位为 0,其余位均为 1。

有这两个特性可知:x & (x - 1) === 0 时,x 为 2 的整数次幂。

代码

function isPowerOf2(n) {
  return n & (n - 1 === 0);
}