算法:判断一个数是不是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 的幂
}
相关推荐
梦帮科技几秒前
量子张量网络破局大模型:从矩阵乘积态 (MPS) 到张量列 (TT-SVD) 低秩收缩全推导
网络·数据结构·数据库·线性代数·矩阵·架构·模拟退火算法
CQU_JIAKE3 分钟前
9.13[A]
算法
懿路向前13 分钟前
【唤醒实战笔记】2026-09-29 | 智能体提示词迭代史(v1 → v8)
linux·笔记·算法
@陈小鱼40 分钟前
基于CNN-Transformer的无袖带血压估计
人工智能·深度学习·神经网络·算法·cnn·transformer·血压
黄金龙PLUS1 小时前
5个1280比特大状态置换算法的设计与分析
算法·网络安全·密码学·哈希算法·同态加密
LOVE️YOU1 小时前
Python 数据结构的本质:位置、对象引用、Hash 与可变性
数据结构·python·哈希算法
不会就选b1 小时前
算法日常・每日刷题--<动态规划>1
java·数据结构·算法
shehuiyuelaiyuehao1 小时前
算法54,链表 两数相加
数据结构·算法·链表
Logic1012 小时前
C语言/数据结构位运算题解:异或XOR找出弹子游戏机中数量为奇数的数字——只出现奇数次
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
147API2 小时前
如何设计“回答、追问、停答”三类蒸馏训练集
人工智能·算法·机器学习