初次看这里的时候,没明白咋回事,后面转换成二进制想了想,得出一个结论:
整数,正a,b(b∈power(2,n)),n为自然数,a&(b-1) = a%b;
证明如下:
- a,b-1同时转为二进制由于b为2的n次幂,b-1的二进制则全为1a的二进制的位数比b-1位数高的,和b-1与运算,为0(相当于减去了b的整数倍)a的二进制的位数比b-1位数低或相同的,为a的低位,即为余数
如:20&8
转换二进制:10100,1000
8-1的二进制:111
10100和111进行与运算,10100的高位(左边的10)为0,相当于减去了8的2(对应的10100的高位10的二进制数值)倍
剩下100 和 111进行与运算,为100,即为4



