使用按位运算验证可分性规则

时间:2015-10-12 15:33:08

标签: python bitwise-operators

如何使用按位操作验证n号码x是否可以被{1}}整除?

我在这上面找到很多相关的链接,但我不清楚它们,因为它们不在Python中。例如,如果我想验证81是否可被394整除,该怎么办?

我想使用按位操作,我想了解如何使用Python实现它。

1 个答案:

答案 0 :(得分:2)

按位操作作为他们的名字让猜测操作数字的二进制表示。这意味着他们通过权力或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):divisible
  • 9:奇数 3位数之和减去偶数之和必须可被9整除= 0b1001 - 奇数:001 + 001 = 010,偶数:010 - 差值为0:可分割

您可以使用轮班(>>)和二进制&

轻松对此进行编码