算法如下:
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位,但只是推測。
如果有更快速有效的辦法,請各位朋友賜教。