閱讀93 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

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

  上一篇:go  跨界醫療路風光背後的艱難:雙良節能並購互聯網醫療企業失敗
  下一篇:go  為什麼我的JVM能實際使用的內存比-Xmx指定的少?