1. 程式人生 > >使用與運算子代替求餘運算子的技巧

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

1.效能對比:

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

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

2.在特殊場景下,是否能用與&替代%呢?

在對10進行求餘的時候,我們發現,餘數總是整數中的個位上的數字,而不用管其他位是什麼;在與運算中,我們經常需要使用位操作符&來取某些位上的值,例如使用0xff&0x17ae來獲取低8位的值,現在我們已經發現有點關聯了,如果求餘結果值的範圍剛好跟是[0,求餘的底數(a%b中的b))集合一樣,那麼低位就是求餘的結果。

23%16 == 7
23 (0x17)& 0x0F == 0x07

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

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

a % x = a & (x  - 1 )