您的位置:首页 > Web前端

剑指Offer之二进制中1的个数(题10)

2016-05-26 21:42 302 查看
1 /****************************************
2     > File Name:test.c
3     > Author:xiaoxiaohui
4     > mail:1924224891@qq.com
5     > Created Time:2016年05月23日 星期一 21时04分35秒
6 ****************************************/
7
8 #include<stdio.h>
9
10 int SumOfBit(int num)
11 {
12     int count = 0;
13     int i = 0;
14
15     for(;i <= 32; i++)
16     {
17         if( (num & (1 << i)) == 1)    //对应的bit位为1
18         {
19             count++;
20         }
21     }
22
23     return count;
24 }


1 /****************************************
2     > File Name:test1.c
3     > Author:xiaoxiaohui
4     > mail:1924224891@qq.com
5     > Created Time:2016年05月23日 星期一 21时24分40秒
6 ****************************************/
7
8
9
10
11 /*这种算法只适应于正数的情况, 当为num为负数时,在某些平台下会是死循环
12  这种算法如果是正数,则不用算32次循环了*/
13
14
15 #include<stdio.h>
16
17 int NumOfBit(int num)
18 {
19     int count = 0;
20
21     while(num != 0)
22     {
23         if( (num & 1) == 1)
24         {
25             count++;
26         }
27
28         num >> 1;
29     }
30
31     return count;
32 }
~


1 /****************************************
2     > File Name:test3.c
3     > Author:xiaoxiaohui
4     > mail:1924224891@qq.com
5     > Created Time:2016年05月23日 星期一 21时30分13秒
6 ****************************************/
7
8
9
10
11 /*这种算法最佳*/
12
13 #include<stdio.h>
14
15 int NumOfBit(int num)
16 {
17     int count = 0;
18
19     while(num != 0)
20     {
21         num = num & (num - 1);
22         count++;
23     }
24
25     return count;
26 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二进制 Offer 剑指