程序员面试100题(算法)之整数的二进制表示中1的个数(两种方法)

// 程序员面试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;
}

你可能感兴趣的:(程序员面试100题(算法)之整数的二进制表示中1的个数(两种方法))