int bitcount(unsigned int n)
{
unsigned int tmp;
tmp = n
- ((n >> 1) & 033333333333)
- ((n >> 2) & 011111111111);
tmp = (tmp + (tmp >> 3)) & 030707070707;
return (tmp%63);
}
刷牛客遇到的,一开始没看懂,查了一下是一个算法叫MIT HAKMEM算法
找到一个详解 https://blog.csdn.net/msquare/article/details/4536388
就是求一个数n的二进制数中1的个数