我想知道二进制有没有除以3的整除法则
例如:在十进制中,如果数字和除以 3,则数字除以 3。例如:15 -> 1+5 = 6 -> 6
除以 3所以 15 除以 3。
要了解的重要一点是,我不是在寻找可以这样做的代码.. bool flag = (i%3==0);不是我要找的答案。我在寻找人类容易做到的事情,就像十进制法则一样。
最佳答案
引用这个网站:How to Tell if a Binary Number is Divisible by Three
基本上从从右边数非零奇数位和非零偶数位的个数。如果它们的差能被 3 整除,则这个数能被 3 整除。
例如:
15 = 1111
有 2 个奇数和 2 个偶数非零位。差值为 0。因此 15
可以被 3
整除。
185 = 10111001
有 2 个奇数非零位和 3 个偶数非零位。差值为 1。因此 185
不能被 3
整除。
解释
考虑 2^n
值。我们知道 2^0 = 1
是全等的 1 mod 3
。因此 2^1 = 2
与 2*1 = 2
mod 3 一致。继续该模式,我们注意到对于 2^n
,其中 n是奇数,2^n
是全等的 1 mod 3
而偶数是全等的 2 mod 3
即 -1 mod 3
。因此 10111001
是全等的 1*1 + 0*-1 + 1*1 + 1*-1 + 1*1 + 0*-1 + 0*1 + 1*-1
mod 3 全等 1 mod 3
。因此 185 不能被 3 整除。
关于algorithm - 如何知道一个二进制数是否被 3 整除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39385971/