何时使用按位与运算符 (&)?

When to use the bitwise and operator (&)?

我理解按位与运算符 (&) 相当于两个位值的乘积。我什么时候使用它?

也请帮助我理解 num&1 在下面的代码中做了什么:

def func(num):
    n = 1 + func((3*num+1) if num&1 else (num>>1))
    return n

如评论所述,num&1num1 之间的按位与。

因为二进制中的 1 是 ...000000001,如果 num 的最低有效位是 1,则 AND 将得出 True,换句话说,如果它是奇数(here 二进制的一些解释)