您的位置:首页 > 其它

整数中1 的个数

2016-07-28 15:30 246 查看
问题

  求整数中1的个数

原理

  一个数n若不为0,从数的最低为到最高位,第一个为1 的位记为 i ,则减去 1 之后,改为变为0,i 右边的所有位都变为1,因此 n & (n-1)可得 n中剩余比 i 更高位序 的 部分 ,循环此操作,则可得 1 的计数。

代码 

#include <iostream>
using namespace std;

int main()
{
int n,s,counter = 0;
cout << " Please input a Integer : " ;
cin >> n;
s = n;

while( n )
{
counter ++;
n = n & (n - 1);
}

cout << " Number of One in " << s << " is " << counter << endl;

return 0;
}


Output

Please input a Integer : 20
Number of One in 20 is 2


总结

  若是负数,则输出补码中包含 1 的个数。当然还有其他的方法: 初始化 1 ,让 1 依次循环左移,依次与 n 进行按位与操作,可得结果。

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: