如何编程实现快速获取一个整型数中的bit流中1的个数

int one_in_unsigned(unsigned n) {
    n =(n & 0x55555555) + ((n>>1) & 0x55555555);
    n =(n & 0x33333333) + ((n>>2) & 0x33333333);
    n =(n & 0x0f0f0f0f) + ((n>>4) & 0x0f0f0f0f);
    n =(n & 0x00ff00ff) + ((n>>8) & 0x00ff00ff);
    n =(n & 0x0000ffff) + ((n>>16) & 0x0000ffff);
    return n;
}

 

posted @ 2019-10-17 15:52  Ray.floyd  阅读(347)  评论(0编辑  收藏  举报