Chinaunix首页 | 论坛 | 博客
  • 博客访问: 157737
  • 博文数量: 31
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 360
  • 用 户 组: 普通用户
  • 注册时间: 2017-02-28 08:37
个人简介

没有绝活,怎能风骚.....

文章分类

全部博文(31)

文章存档

2017年(31)

我的朋友

分类: C/C++

2017-04-22 12:00:48

    我们拿到这样的题目,第一思路可能是进行移位操作,每当移除的位为1时,设定一个变量去统计1的个数,但是这种方法可能相对来说比较麻烦。
    大家可以看一下下面这种方法,是不是简单一些:就是一个数不断与自己减1相与,其实功能就是把自己的最低的1位去掉,肯定也必须设定一个变量去统计循环执行的次数,也就是位为1的总数。

点击(此处)折叠或打开

  1. int fun(int x)
  2. {
  3.     int count = 0;
  4.     while(x)
  5.     {
  6.         x = x&(x-1);
  7.         count ++;
  8.     }
  9.     return count;
  10. }
阅读(1277) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~