算法如下:
x&3==0,则是4的倍数。
原理:
先来看一组数字的二进制表示
4 0100
8 1000
12 1100
16 10000
20 10100
由此可见4的倍数的二进制表示的后2为一定为0。
从另外一个角度来看,4的二进制表示是0100,任何4的倍数一定是在此基础上增加n个0100,由此也可得4的倍数的二进制表示的后2为一定为0。
所以之前的算法成立。
利用位运算来判断是否最后2位是0比直接用十进制取余要快,测试数据回头补上。
个人推测:此算法中参与运算的只是x的最后2位,理由是3的有效位只有2位,但只是推测。
如果有更快速有效的办法,请各位朋友赐教。