我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

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

为睢阳等地区用户提供了全套网页设计制作服务,及睢阳网站建设行业解决方案。主营业务为成都网站设计、成都网站制作、睢阳网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

 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
  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
 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
 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之二进制中1的个数(题10)
地址分享:http://shouzuofang.com/article/jepohg.html

其他资讯