例如“7”,里面有3个1:111;
移位,位运算比较方便。
n & (n-1),那么二进制n从右往左第一个1变为0;
#include <iostream>
using namespace std;
int main()
{
int n;
while(cin >> n)
{
int cnt = 0;
/*
while(n)
{
if(n & 1 == 1)
cnt++;
n = n >> 1;
}
cout << cnt << endl;
*/
while(n)
{
n = n & (n - 1);
cout << n << endl;
}
}
}
本文介绍了一种使用位运算来计算整数中1的个数的方法。通过演示具体的C++代码实现,展示了如何利用n&(n-1)操作来高效地消除二进制表示中最右侧的1,直至该数变为0。此方法避免了直接检查每一位是否为1的传统方式,提供了一种更为优化的解决方案。

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



