0. 整除与取模


xmody=x−y⋅⌊x/y⌋


1. 应用

求一个数二进制形式 1 出现的次数:

int bitCount(int n) {
if (n == 0) {
return 0;
}
return n % 2 + bitCount(n >> 1);
// return n % 2 + bitCount(n / 2);
}


上述代码,便完美地体现了移位运算与除法、取模运算的关系。但要注意的是,移位运算会丢失移出的各个位是 0 还是 1,在代数系统中,这种情况,即为向下取整,5/2(5>>1) = 2, 4(4>>1) = 2;