10_NumberOf1InBinary二进制中1的个数
2016-07-13 22:50
274 查看
面试题10:二进制中1的个数
题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路:
1。设置flag标志位,初始flag=1,与数进行 与 位运算,其实就是看末尾是不是1,要是结果为1,则为1,要是结果为0,则为0;然后将flag左移一位,接着判断倒数第二位的数是否为1。该方法的循环次数等于该数的位数,即是从数的末尾遍历到第一位
2.更好的方法:循环次数等于该数中1的个数
把一个整数减去1,再和原来的整数做与运算,会把最右边的1变成0,那么有多少个1,就可以执行多少次这样的操作。
题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路:
1。设置flag标志位,初始flag=1,与数进行 与 位运算,其实就是看末尾是不是1,要是结果为1,则为1,要是结果为0,则为0;然后将flag左移一位,接着判断倒数第二位的数是否为1。该方法的循环次数等于该数的位数,即是从数的末尾遍历到第一位
int NumberOf1InBinary(int n) { int count=0; unsigned int flag=1; while(flag){ if(n&flag) count++; flag=flag<<1; } return count; }
2.更好的方法:循环次数等于该数中1的个数
把一个整数减去1,再和原来的整数做与运算,会把最右边的1变成0,那么有多少个1,就可以执行多少次这样的操作。
class Solution { public: int NumberOf1(int n) { int count=0; while(n){ ++count; n&=n-1; } return count; } };
相关文章推荐
- Python 面向对象编程——访问控制
- IBM scala(一)-----面对对象的函数编程
- zTree-基本树
- 国内四个不错的技术团体博客
- iOS 浅析蓝牙交互之蓝牙客户端
- 328. Odd Even Linked List
- Python 面向对象编程——类和实例
- 模拟键盘输入字符串的C++类
- http://www.oreilly.com/catalog/errataunconfirmed.csp?isbn=9780596529321
- 采用MySQL_upgrade升级授权表方式升级
- CardView的使用
- 模拟键盘向当前光标处发送字符串
- Android基础知识总结---四大组件之一Service(一)
- Shiro简单的角色权限控制
- 分割字符串
- [OpenGL] 利用精灵表制作动画
- iOS开发中的错误整理,iOS9之后的UIWindow(TopWindow)以及UIWindow与statusBar的关系
- 获取多个同名窗口的句柄
- Python + Android + Uiautomator自动化测试
- Http缓存