求算法高手看看这个题目的意思:如何以最快的速度计算出一个二进制数中1的个数
方紫涵 2014-02-15 03:15:02
void find32One(int n)
{
const int MASK1 = 0x55555555;
const int MASK2 = 0x33333333;
const int MASK4 = 0x0f0f0f0f;
const int MASK8 = 0x00ff00ff;
const int MASK16 = 0x0000ffff;
n = (n & MASK1) + ((n >> 1) & MASK1);
n = (n & MASK2) + ((n >> 2) & MASK2);
n = (n & MASK4) + ((n >> 4) & MASK4);
n = (n & MASK8) + ((n >> 8) & MASK8);
n = (n & MASK16) + ((n >> 16) & MASK16);
cout << n << " number of 1." << endl;
}
求解释,多谢.