剑指off-统计数字二进制位有多少个1
2015-07-14 11:06
204 查看
//判断一个数字有多少位1 //运用位运算,用n与1进行与运算,然后向左移动1,为什么不向右移动n,因为如果n是负数的话首位会不停补充1,造成死循环。 int NumberOfOne(int n) { int count=0; int one=1; while (one!=0) { if (n & one) { count++; } one=one<<1; } return count; } //另一种解法,n-1与n 会将n最右边的1变成0,那么有多少个1就会进行多少次运算,不像第一种方法,次数是固定的 int numberofone(int n) { int count=0; while (n>0) { n=(n-1) & n; count++; } return count; }
//相关题目
//1.判断一个数字是不是二的整数次幂,当一个数是二的整数倍的时候它有且仅有一个1
//2.m,n m要改变多少位才能变成n,先求m^n 得到的结果再求里面有多少个1
相关文章推荐
- 分页存储过程
- 添加Google网络地图功能
- 芸芸毕业生
- php循环
- C语言中的指针以及二级指针
- Android自定义RatingBar
- 给Xcode增加复制行、删除行快捷键的方法
- jap中PAGE,request,session和application的区别
- linux 批量清除tomcat日志
- js 处理移动端触摸事件
- 径向菜单的制作
- Wireshark数据抓包教程之Wireshark的基础知识
- nginx支持ssi使用../
- Flyme应用中心应用认领
- 针对Ruby的Selenium WebDriver安装指南
- java构造函数加载
- odoo8 pycharm debug 遇到的openerp.service.server: Evented Service (longpolling) running on 0.0.0.0:8072
- 访问一个网站需要那几个协议?
- chrome api调试插件 postman
- 053第423题