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的倍数可以忽略。

 

 

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