| 描述 | |
|---|---|
| 知识点 | 字符串,查找 |
| 运行时间限制 | 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;
- }
本文介绍了一种高效的方法来计算任意整数在二进制表示中1的个数,通过不断移除最低位的1并计数,直到整数变为0。这种方法避免了转换成字符串等额外步骤,提高了计算效率。
2733

被折叠的 条评论
为什么被折叠?



