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

Ita*_*aha 13 algorithm math binary

我想知道二元系统中是否存在除以3的任何可分规则.

例如:在十进制中,如果数字总和除以3,则数字除以3.例如:15 -> 1+5 = 6 -> 6除以3,因此15除以3.

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

Ben*_*Lin 32

请参阅此网站:如何判断二进制数是否可被三除尽

基本上计算从右边开始的非零奇数位数和非零偶数位数位的数量.如果它们的差异可以被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是congurent 2*1 = 2mod 3.继续这个模式,我们注意到2^nn 在哪里是奇数,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*-1mod 3是一致的1 mod 3.因此185不能被3整除.

  • @ItayBraha:不是一个完整的解释:这与测试十进制数是否可被11整除的技巧相同.这里的关键字是*交替数字和*.当且仅当十进制基数的交替数字和可被11整除时,原始数字也是如此.当您要测试可分性的数字比数字系统的基数*多*时,可以使用它.要测试基数以下数字的可分性(例如,十进制系统为9),请使用普通数字和.因此,人们也可以用十六进制表示法轻松地测试17的可分性. (2认同)