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

如何通过二进制末位判断int变量奇偶及运算效率问题

二进制末位判断整数奇偶的方法与性能说明

具体判断方法

计算机中所有整数本质上都以二进制形式存储,二进制从右往左每一位的权重是2的对应次幂:除了最右侧末位的权重是2^0=1,其余所有位的权重都是2、4、8……这类偶数。偶数相加的结果永远是偶数,偶数加1才会得到奇数,因此只要看二进制最后一位的取值,就能直接判断数字奇偶:

  • 将目标整数和1做按位与运算(写法为n & 1),如果结果为1,说明二进制末位是1,对应数字是奇数
  • 如果运算结果为0,说明二进制末位是0,对应数字是偶数

这个规则对补码存储的负数同样生效,不需要额外处理符号问题。以Python为例,判断逻辑的实现非常简单:

# 传入整数,奇数返回True,偶数返回False
def is_odd(n: int) -> bool:
    return (n & 1) == 1

和取模判断方式的性能对比

直接读取二进制末位判断奇偶速度更快的说法,只在非常极端的场景下成立,99%的实际开发场景里,两种写法没有任何可测量的速度差异:

  • 从纯硬件指令逻辑看,通用取模运算需要调用除法器计算余数,耗时确实比单步的按位与操作高。但目前所有成熟的编译器(GCC、Clang、MSVC等)、甚至不少脚本语言的解释器,只要开启基础优化,碰到n % 2这类对2取模判断奇偶的写法,都会自动把它优化成等价的按位与指令,最终CPU执行的机器码和手写n & 1完全一致,不存在速度差。
  • 只有在完全关闭所有编译优化、或者使用的语言/运行环境完全没做这个针对性优化的情况下,按位与判断才会比取模快一点——但这个速度差是纳秒级的,普通业务场景下根本测不出来差异,更不可能成为程序的性能瓶颈。
  • 日常写代码优先选团队成员读着最顺畅的写法就好,没必要为了这点几乎不存在的性能优势强行换写法,平白增加后续维护的理解成本。

补充一个容易踩的坑:部分语言中负数取模的结果为负数,比如C语言里(-1) % 2的返回值是-1,这时候写n % 2 == 1判断负奇数会出错,反而按位与的写法不会受符号规则影响,兼容性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.17 16:16:01