如何判断一个数是否为2的整数次幂
2021-04-17 本文已影响0人
McDu
如果一个整数是2的整数次幂,当它转化为二进制时,只有最高位是1,其他位都是0。
十进制 | 二进制 | 是否为2的整数次幂 |
---|---|---|
8 | 1000B | 是 |
16 | 10000B | 是 |
32 | 100000B | 是 |
64 | 1000000B | 是 |
100 | 1100100B | 否 |
2的整数次幂一旦减1,它的二进制数字就全部变为1
十进制 | 二进制 | n&n-1 | 是否为2的整数次幂 |
---|---|---|---|
8 | 111B | 0 | 是 |
16 | 1111B | 0 | 是 |
32 | 11111B | 0 | 是 |
64 | 111111B | 0 | 是 |
100 | 1100000B | 1 | 否 |
0 和 1 按位与的结果是0,所以2的整数次幂和它本身减1的结果进行运算结果必定是0.
function isPowerOf2(num) {
return (num&num-1) === 0;
}