Chinaunix首页 | 论坛 | 博客
  • 博客访问: 925402
  • 博文数量: 177
  • 博客积分: 8613
  • 博客等级: 中将
  • 技术积分: 2835
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-12 04:16
文章分类
文章存档

2012年(12)

2011年(24)

2010年(24)

2009年(75)

2008年(42)

我的朋友

分类: C/C++

2009-07-02 21:13:32

    得到int数二进制中1的个数,这个题目和判断奇偶差不多,当然要使用位运算来做,以下是参考了网上的人的实现,我想到的办法比这个稍微差了点,唉,这已经是最差的方法了,位运算的水,很深啊。
    ok,说说感想:
1、调试了一下,刚开始忘记在bitcount函数里将count 返回了,范了个低级错误
2、刚开始n >>= 1的地方忘记了写=,结果是死循环,n一直不改变
3、需要更多更深入的学习位运算啊。。


[root@bjxdurs235 c-study]# cat -n bitcount.c
     1  #include
     2  int bitcount(int n){
     3          int count = 0;
     4          while (n > 0){
     5                  count += n & 1;
     6                  n >>= 1;
     7          }
     8          return count ;
     9  }
    10
    11  int main(void){
    12          int i = 178924;
    13          int  num;
    14          num = bitcount(i);
    15          printf("%d: has %d 1s\n",i,num);
    16  }
阅读(988) | 评论(0) | 转发(0) |
0

上一篇:进制转换

下一篇:第一个汇编

给主人留下些什么吧!~~