【算法】判断一个正整数是否为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);
}