boxmoe_header_banner_img

Hello! 欢迎来到星海博客!

文章导读

利用位运算实现计算2的幂


avatar
XingHai 2026年3月10日 20

题目:

给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。

如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。

题目来源:231.2的幂

题目分析:

若 n=2
x
且 x 为自然数(即 n 为 2 的幂),则一定满足以下条件:

1.恒有n & (n – 1) == 0。因为二进制转为十进制公式为1 * 2x + a1 * 2x-1 +···+ ax * 20,所以2的幂n的二进制为xxx00100000,所以n – 1的二进制为xxx00011111,所以n & (n – 1) == 0。

2.一定满足n > 0

因此,通过n > 0 且 n & (n - 1) == 0 即可判定是否满足 n=2x

代码:

class Solution{
public:
    bool isPowerOfTwo(int n){
        if(n <= 0) return true;
        return !(n & n - 1);
    }
}

复杂度分析

  • 时间复杂度:O(1)。
  • 空间复杂度:O(1)。


评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字
插入代码