天天看點

使用與運算符代替求餘運算符的技巧

求餘運算:a mod b就相當與a-(a div b)*b 的運算。

與運算:就是一個指令的事

在對10進行求餘的時候,我們發現,餘數總是整數中的個位上的數字,而不用管其他位是什麼;在與運算中,我們經常需要使用位操作符&來取某

些位上的值,例如使用0xff&0x17ae來擷取低8位的值,現在我們已經發現有點關聯了,如果求餘結果值的範圍剛好跟是[0,求餘的底數

(a%b中的b))集合一樣,那麼低位就是求餘的結果。

<code>1</code>

<code>23%16 == 7</code>

<code>2</code>

<code>23 (0x17)&amp;amp; 0x0f == 0x07</code>

是以,當需要對2的次幂進行求餘時,可以是使用&amp;運算符來代替,效率會倍兒棒。

當x=2^n(n為自然數)時,

<code>a % x = a &amp;amp; (x  - 1 )</code>

繼續閱讀