得到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 }
阅读(995) | 评论(0) | 转发(0) |