位与运算的应用:

0、对于a%b进行取模和取余操作,如果b=2^k,则用位与运算比取模/余速度更快:a%b=a&(b-1)

1、 用于整数的奇偶性判断,2值状态的切换

     if(a&1)

      { printf(“a是奇数”) } 

else{

  { printf(“a是偶数”) }/*偶数的最低位为0*/

}

2正整数m对2^k取模:m%(2^k)=m&((1<<k)-1)

3掩码:对于数组a[size]掩码是mask =size -1

    对16进制=1<<n -1

 

快速幂取模算法: a^b mod c

// 快速计算 (a ^ p) % m 的值
__int64 FastM(__int64 a, __int64 p, __int64 m)
{
if (p == 0) return 1;
__int64 r = a % m;
__int64 k = 1;
while (p > 1)
{
if ((p & 1)!=0)
{
k = (k * r) % m;
}
r = (r * r) % m;
p >>= 1;
}
return (r * k) % m;
}

posted on 2018-12-24 15:39  杰瑞鼠  阅读(318)  评论(0编辑  收藏  举报