OI-wiki中说对 2 的非负整数次幂取模的代码是这样的:
int modPowerOfTwo(int x, int mod) { return x & (mod - 1); }
可是若计算 16mod 316 \mod 316mod3,161616 的二进制是 100001000010000,3−13-13−1 的二进制是 000100001000010, & 一下不就变成 000 了吗? 可是 16mod 3=116 \mod 3 = 116mod3=1 啊!
&