aurain
技术文摘
posts - 137,  comments - 268,  trackbacks - 0

对于一个整形变量,求其二进制表示中“1”的个数。

扩展问题:给定两个正整数啊a和b,问把a变为b需要改变多少位(bit)?也就是说,整数a和b的二进制表示中有多少位是不同的?

把两个整数 a, b 异或, 然后又回归到判断 1 的个数

int Count( int a, int b)
{
    int num = 0;
    int v = a ^ b;
    //计算一个整数中1的个数
    while(v)
    {
       v &= (v-1);
       num++;
    }
    return num;
}

posted on 2008-10-21 10:25 阅读(1054) 评论(0)  编辑 收藏 引用 所属分类: 算法与数据结构

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2009年3月>
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(17)

随笔分类(138)

随笔档案(137)

网络开发

最新随笔

搜索

  •  

积分与排名

  • 积分 - 493566
  • 排名 - 36

最新随笔

最新评论

阅读排行榜

评论排行榜