5.二进制中1的个数
题目内容:
代码及思路:
神奇操作:将原数减1之后会发现,从右往左,第一个1会变成0,第一个1之后的所有0变成1,而最左边到第一个1的数不变。因此将原数减1之后再和原数相与操作,就会得到最左边到第一个1位置处所有数保持不变,而剩下的数都为0。以此类推进行操作,就会依次将二进制中的1找到。
以下图为例:
#include<iostream>
using namespace std;
class solution
{
public:
int numberof1(int num)
{
int count = 0;
while (num)
{
num = (num - 1)#
count++;
}
return count;
}
};
void main()
{
int num;
int result;
cin >> num;
solution* object = new solution();
result = object->numberof1(num);
cout << result << endl;
}