剑指Offer08 二进制中1的个数

 1 /*************************************************************************
 2     > File Name: 08_NumOf1InBinary.c
 3     > Author: Juntaran
 4     > Mail: JuntaranMail@gmail.com
 5     > Created Time: 2016年08月29日 星期一 20时40分15秒
 6  ************************************************************************/
 7 
 8 #include <stdio.h>
 9  
10 int NumberOf1_1(int n)
11 {
12     int count = 0;
13     int flag = 1;
14     while (flag < n)
15     {
16         if (n & flag)
17             count ++;
18         flag = flag << 1;
19     }
20     return count;
21 }
22 
23 int NumberOf1_2(int n)
24 {
25     int count = 0;
26     while (n)
27     {
28         ++ count;
29         n = (n - 1) & n;
30     }
31     return count;
32 }
33 
34 int main()
35 {
36     int ret1 = 0;
37     int ret2 = 0;
38     
39     int n = 5;
40     ret1 = NumberOf1_1(n);
41     ret2 = NumberOf1_2(n);
42     printf("ret1 is %d\n", ret1);
43     printf("ret2 is %d\n", ret2);
44 }

 

posted @ 2016-08-29 20:46  Juntaran  阅读(165)  评论(0编辑  收藏  举报