X % 2^n = X & (2^n - 1)

定理:2^n表示2的n次方,也就是說,一個數對2^n取模 == 一個數和(2^n - 1)做按位與運算 。

假設n爲3,則2^3 = 8,表示成2進制就是1000。2^3 -1 = 7 ,即0111。

此時X & (2^3 - 1) 就相當於取X的2進制的最後三位數。

從2進制角度來看,X / 8相當於 X >> 3,即把X右移3位,此時得到了X / 8的商,而被移掉的部分(後三位),則是X % 8,也就是餘數。

 

轉載自:http://www.hollischuang.com/archives/2091

 

根據個人理解,已知從右往左第i位代表的十進制是2^(i-1),該數二進制形式第n位及右邊的位的和最大爲2^n-1

如果對2的n次方取模(%),那麼這部分數據由於小於2^(i-1)就是最後的餘數了,其他位都是2的倍數可以忽略。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章