算法:判断一个数是不是2的幂

现在有一个数n,这个n是整数。所以要把正整数和负整数考虑在内,现在问这个n是不是2

的幂

现在对n的取值进行讨论,画出二的幂函数,可以看到当n小于等于0时,x无取值,所以小于等于0的n不是2的幂。所以只需要讨论n大于0时的情况即可。下面是三种解决方案

1循环法

cpp 复制代码
bool isPowerOfTwo(int n) {
    if (n <= 0) return false;
    while (n % 2 == 0) n /= 2;
    return n == 1;
}

2位运算

cpp 复制代码
bool isPowerOfTwo(int n) {
    return n > 0 && (n & (n - 1)) == 0;
}

原理:2 的幂的二进制只有一个 1,n & (n-1) 会把最低位的 1 去掉,结果为 0。

3利用int_min

cpp 复制代码
bool isPowerOfTwo(int n) {
    return n > 0 && (1 << 30) % n == 0;  // 2^30 是 int 范围内最大的 2 的幂
}
相关推荐
黄河123长江几秒前
有限Abel群的结构()
算法
阿米亚波18 分钟前
【C++ STL】std::unordered_multimap
开发语言·数据结构·c++·笔记·stl
Jerry41 分钟前
LeetCode 92. 反转链表 II
算法
骊城英雄1 小时前
Rust从入门到精通-trait
人工智能·算法·rust
可编程芯片开发1 小时前
基于PI控制算法的pwm直流电机控制系统Simulink建模与仿真
算法
怕浪猫2 小时前
2840亿参数只卖白菜价:DeepSeek V4 Flash 正式版上线,Agent 能力暴涨6倍
人工智能·算法
让学习成为一种生活方式2 小时前
苄基异喹啉生物碱糖基转移酶UGT74AN1晶体--Journal of Agricultural and Food Chemistry
人工智能·算法
alphaTao2 小时前
LeetCode 每日一题 2026/7/27-2026/8/2
python·算法·leetcode
三克的油2 小时前
数据结构-4
数据结构
2501_926978332 小时前
提示工程的实战报告(二):模型的失败模式与边界行为
人工智能·深度学习·算法