移位运算与除法、取模运算

0. 整除与取模

xmody=xyx/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;

原文地址:https://www.cnblogs.com/mtcnn/p/9423288.html