描述 | |
---|---|
知识点 | 字符串,查找 |
运行时间限制 | 10M |
内存限制 | 128 |
输入 | 输入一个整数(int类型) |
输出 | 这个数转换成2进制后,输出1的个数 |
样例输入 | 5 |
样例输出 | 2 |
如果整数n的二进制中有k个1,则需要循环k次,方法是不断清除二进制中最低位的1,直至n为0;
如何清除n的二进制最低位1,n = n & (n - 1);
举例子:对于6来说,其二进制是0110,进行上述操作:6(0110)& 5(0101) = 4(0100),最低位的1已经清除
源代码:
- #include <iostream>
- using namespace std;
- void main(){
- int n;
- cin >> n;
- int count = 0;
- for(count = 0; n;count++)
- n = n & (n - 1);
- cout << count << endl;
- }