位与运算的应用:
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
3 快速幂取模算法: 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;
}