📜  C |回路和控制结构|问题20(1)

📅  最后修改于: 2023-12-03 14:39:40.141000             🧑  作者: Mango

C语言:回路和控制结构问题20
问题描述

给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

示例

示例1:

输入:1

输出:true

解释:20 = 1

示例2:

输入:16

输出:true

解释:24 = 16

示例3:

输入:218

输出:false

题目分析

对于一个数x,如果它是2的幂次方,则二进制表示时只有最高位为1,其他位为0。

利用位运算的特性,我们可以将x与(x-1)做与运算,如果结果为0,则x为2的幂次方。

代码实现
bool isPowerOfTwo(int n) {
    if (n <= 0) {
        return false;
    }
    return !(n & (n - 1));
}
复杂度分析

时间复杂度:O(1)

空间复杂度:O(1)