《编程之美》一个二进制趣题的讨论

Aiur · Zellux at 
问题很简单,给定一个 8 位整型,要求写程序计算这个数的二进制表示中 1 的个数,要求算法的执行效率尽可能的高。先来看看样章上给出的几个算法:解法一,每次除二,看是否为奇数,是的话就累计加一,最后这个结果就是二进制表示中 1 的个数。解法二,同样用到一个循环,只是里面的操作用位移操作简化了。int Count(int v){    int num = 0;    while (v) {        num += v & 0x01;        v >>= 1;    }    return num;}解法三,用到一个巧妙的与操作,v & (v - 1) 每次能消去二进制表示中最后一位 1,……