Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4462970
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: C/C++

2011-06-05 13:02:50

继续 计算一个整型数中的 1 bit 的个数。

这里对 循环法 和 bit稀疏法 进行了验证, bit稀疏法比较好,循环的次数是 bit位为 1 的个数

  1. #include <stdio.h>

  2. int bitcount(unsigned int n)  //循环法
  3. {
  4.     printf("bitcount...\n");
  5.     int count = 0;
  6.     while(n)
  7.     {
  8.         count += n & 0x1u;
  9.         n >>= 1;
  10.     }
  11.     printf("bit count = %d\n\n",count);
  12.     return count;
  13. }

  14. int bitcount2(unsigned int n)  //稀疏法
  15. {
  16.     int count = 0;
  17.     while(n)
  18.     {
  19.         count++;
  20.         n &= (n-1);
  21.     }
  22.     printf("bitcount2=%d\n",count);
  23.     return count;
  24. }

  25. int main(int argc, char *argv[])
  26. {
  27.     unsigned int a = 9;
  28.     unsigned int b =19;
  29.     bitcount(a);
  30.     bitcount2(b);
  31.     return 0;
  32. }
  1. ywx@yuweixian:~/yu/c/judge_1$ ./1xunhuan
  2. bitcount...
  3. bit count = 2

  4. bitcount2=3

阅读(991) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~