草庐IT

canBeDevidedBy3

全部标签

java - 用二元运算检查除以 3?

我读过thisinterestinganswer关于“检查一个数是否能被3整除”虽然答案是在Java中,但它似乎也适用于其他语言。显然我们可以这样做:booleancanBeDevidedBy3=(i%3)==0;但有趣的部分是另一个计算:booleancanBeDevidedBy3=((int)(i*0x55555556L>>30)&3)==0;为简单起见:0x55555556L="1010101010101010101010101010110"铌还有另一种检查方法:Onecandetermineifanintegerisdivisibleby3bycountingthe1bitsa