rust 这段代码如何检查一个数的奇偶性?(偶或奇)

jgovgodb  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(94)

我在reddit上发现了这段代码
此代码对偶数返回1,对奇数返回-1。
它比other方法计算同样的东西需要更少的指令,而且可能相当快。那么,它是如何工作的?(一步一步的分解会很有帮助)
注意:我找到了What is the fastest way to find if a number is even or odd?,但也不明白它是如何工作的。

enxuqcxy

enxuqcxy1#

让我们从里到外来分析一下。
1.第一个月
这将使用逐位与“屏蔽”除最低有效位之外的所有位。由于最低有效位是“1”位,因此如果数字是奇数,则其计算结果为1;如果数字是偶数,则其计算结果为0

  1. (result1) << 1
    此操作将左移1位。这具有乘以2的效果。如果num为奇数,则此操作将计算为2,如果num为偶数,则仍计算为0。(0 * 2 = 0)
  2. (result2) as i32
    这会将得到的无符号整数(20)转换为有符号整数,允许我们在下一个操作中减去它。这只适用于编译器,对内存中的值没有影响。
  3. x1米11米1x
    1减去前一个数字,如果num是偶数,我们得到1 - 0,得到1,如果num是奇数,我们得到1 - 2,得到-1

相关问题