判斷一個整數是否為4的倍數?


算法如下:

  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位,但只是推測。

 

  如果有更快速有效的辦法,請各位朋友賜教。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM