// 程序员面试100题(算法)之整数的二进制表示中1的个数
#include "stdafx.h"
#include <iostream>
using namespace std;
int NumberOf1_s1(int num)
{
int count = 0;
unsigned int flag = 1;
while(flag != 0)
{
if((num & flag) != 0)
{
count++;
}
flag = flag << 1;
}
return count;
}
int NumberOf1_s2(int num)
{
int count = 0;
while(num != 0)
{
num = (num - 1) & num;
count++;
}
return count;
}
int _tmain(int argc, _TCHAR* argv[])
{
int num = 0;
cin >> num;
cout << NumberOf1_s2(num) << endl;
return 0;
}