You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅用纯位运算(无加减)判断32位整数是否为2的幂

纯位运算判断32位整数为2的幂的方案

核心逻辑

2的正整数次幂的32位整数满足两个必要条件:

  • 为正整数,排除0、负数场景
  • 二进制表示中仅有1个高位为1,其余位全为0

一行实现代码

针对32位有符号整数,完全不使用加减运算符的实现如下:
num > 0 && (num & -num) == num

如果需要完全避免数值比较运算符,纯用位运算实现正数判断可改写为:
(num & 0x80000000) == 0 && num != 0 && (num & -num) == num

原理说明

32位补码规则下,-num等价于~num + 1,无需显式调用二元加减运算符就可以完成数值转换。num & -num的位运算会直接提取出num二进制序列中最低位的1,若num是2的幂,其二进制仅存在1个1,提取结果就会和num本身完全相等。

边界适配

  • 若针对32位无符号整数,只需移除符号位判断,保留num != 0 && (num & -num) == num即可
  • 计算复杂度为O(1),和原有减法方案效率完全一致

内容的提问来源于stack exchange,提问作者Money Mit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:48:03