使用按位运算验证整除规则

Verify divisibility rules using bitwise operations

如何使用按位运算验证数字 n 是否可以被 x 整除?

我找到了很多关于此的相关链接,但我不太了解它们,因为它们不在 Python 中。例如,如果我想验证 81 是否可以被 394 整除怎么办?

我想使用按位运算,我想了解如何使用 Python 来实现它。

顾名思义,位运算让 guess 对数字的二进制表示进行运算。这意味着它们将非常有效地测试 1 或 2 的整除性,但几乎不能用于任何其他情况。

示例:

  • n 能被 2 整除:n & 1 == 0
  • n 能被 4 整除:n & 3 == 0
  • n 能被 8 整除:n & 7 == 0

还有其他可以使用的整除规则:您可以调整 casting out 9 or 11 以测试被 15 或 17 整除(基数 16 用于每个字节的半字节),但因为一个整数除法通常更快与进行许多更简单的操作(累加器直接处理 32 位或 64 位的数字)相比,它们很少被使用...

如果您的要求是测试 3 和 9 的整除性,您可以调整 将 9 换算为 3 = 4 - 1,以及 11 9 = 8 + 1。 81 = 0b1010001

  • 3:2 位数字之和 必须能被 3 整除 - 从小权重开始:01+00+01+01=0b11 (=3):可整除
  • 9:奇数之和3位数字减去偶数之和必须能被9整除=0b1001-奇数:001+001=010,偶数:010-差是0:可整除

您可以使用移位 (>>) 和二进制 &

轻松编码