原题链接:[https://leetcode-cn.com/problems/power-of-two/](https://leetcode-cn.com/problems/power-of-two/) 解题思路: 1. 只有大于0的数才可以是2的幂 2. 2的幂在二进制中满足条件:一个1后跟n个0,例如`8=00001000`。 3. 如果不是2的幂,其二进制中有不止一个1,例如`6=00000110`。 4. 因此只需要判断二进制是否满足条件一个1后跟n个0即可,判断方法如下: * 以`n=8`为例,8的二进制为`00001000`,-8的二进制为`11111000`,`8 & -8 = 00001000`等于8。 * 以`n=6`为例,6的二进制为`00000110`,-6的二进制为`11111010`,`6 & -6 = 00000010`不等于6。 * 以`n=7`为例,7的二进制为`00000111`,-7的二进制为`11111001`,`7 & -7 = 00000001`不等于7。 * 因此要判断n是否2的幂,只需判断`(n & -n) === n`即可。如需查看更详细的分析,请看[官方题解](https://leetcode-cn.com/problems/power-of-two/solution/2de-mi-by-leetcode/)。 ```javascript [] /** * @param {number} n * @return {boolean} */ var isPowerOfTwo = function (n) { // 判断n大于0,且满足(n & -n) === n。 return n > 0 && (n & -n) === n; }; ```