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

这段Rust代码如何判断数字奇偶性?请分步解析其原理

解析Rust代码:偶数返回1、奇数返回-1的高效实现

这段代码1 - ((num & 1) << 1) as i32可以快速判断数字奇偶性,偶数返回1,奇数返回-1,且因为全程用位运算实现,指令数更少、执行效率更高。下面分步拆解它的工作原理:

步骤1:提取最低位判断奇偶性

num & 1是按位与操作:

  • 二进制中,所有偶数的最低位都是0,奇数的最低位都是1
  • 按位与1时,只有最低位会保留,其余位都会被置0
  • 结果:偶数得到0,奇数得到1

步骤2:左移一位放大结果

(num & 1) << 1是左移一位操作:

  • 左移一位相当于把数值乘以2
  • 第一步得到的0左移后还是0,1左移后变成2(二进制10)

步骤3:类型转换保证运算一致性

((num & 1) << 1) as i32将左移后的结果转为i32类型,确保后续和整数1做减法时类型匹配,避免隐式转换可能带来的问题。

步骤4:计算最终结果

1 - [前面的结果]分两种情况:

  • 若num是偶数:1 - 0 = 1,符合预期返回值
  • 若num是奇数:1 - 2 = -1,符合预期返回值

为什么这个实现更高效?

位运算直接在CPU的寄存器层面执行,不需要条件分支(比如if num % 2 == 0这类判断会产生分支预测开销),也不需要取模运算的额外指令,所以生成的机器码更少,执行速度更快。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:25:33