使用與運算符代替求餘運算符的技巧
1.性能對比:
求餘運算:a MOD b就相當與a-(a DIV b)*b 的運算。
與運算:就是一個指令的事
2.在特殊場景下,是否能用與&替代%呢?
在對10進行求餘的時候,我們發現,餘數總是整數中的個位上的數字,而不用管其他位是什麼;在與運算中,我們經常需要使用位操作符&來取某 些位上的值,例如使用0xff&0x17ae來獲取低8位的值,現在我們已經發現有點關聯了,如果求餘結果值的範圍剛好跟是[0,求餘的底數 (a%b中的b))集合一樣,那麼低位就是求餘的結果。
1 |
23%16 == 7 |
2 |
23 (0x17)& 0x0F == 0x07 |
所以,當需要對2的次冪進行求餘時,可以是使用&運算符來代替,效率會倍兒棒。
當x=2^n(n為自然數)時,
1 |
a % x = a & (x - 1 ) |
文章轉自 並發編程網-ifeve.com
最後更新:2017-05-22 16:39:30