一尘不染

如何知道二进制数是否除以3?

algorithm

我想知道二进制系统中是否有除以3的可除法则。

例如:以十进制表示,如果数字总和除以3,则数字除以3。例如,示例:除以3,则15 -> 1+5 = 6 -> 615除以3。

需要了解的重要一点是,我不是在寻找会这样做的代码。.bool flag =(i%3 == 0);
不是我要找的答案。我寻找的东西就像十进制定律一样容易被人做。


阅读 688

收藏
2020-07-28

共1个答案

一尘不染

请访问此网站:如何判断二进制数是否可被三除

从右开始 基本上计算非零奇数位和非零偶数位 的数量 。如果它们的差可被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 = 22*1 = 2模3。继续模式,我们注意到对于2^nn奇数,2^n是全等的1 mod 3,对于n甚至是全等2 mod 3-1 mod 3。因此10111001,全等1*1 + 0*-1 + 1*1 + 1*-1 + 1*1 + 0*-1 + 0*1 + 1*-1mod
3是全等的1 mod 3。因此185不能被3整除。

2020-07-28