您的位置:首页 > 其它

统计一个二进制数有几个1的方法

2011-01-07 09:49 211 查看
1. 循环

求函数返回值,输入x=9999;   
int   func   (   x   ) 
{   
        int   countx   =   0;   
        while   (   x   )   
        {   
                countx   ++;   
                x   =   x&(x-1);
        }   
        return   countx;   
}


2. 直接相加

x = (x & 0x55555555) + ((x >> 1) & 0x55555555);  // 相伶1位相加
x = (x & 0x33333333) + ((x >> 2) & 0x33333333);  // 相伶2位相加 
x = (x & 0x0F0F0F0F) + ((x >> 4) & 0x0F0F0F0F);  // 相伶4位相加
x = (x & 0x00FF00FF) + ((x >> 8) & 0x00FF00FF);  // 相伶8位相加
x = (x & 0x0000FFFF) + ((x >>16) & 0x0000FFFF);  // 相伶16位相加
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐