求int型正整数在内存中存储时1的个数/华为机试(多种方法C/C++)

题目描述

输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。

输入描述:

 输入一个整数(int类型)

输出描述:

 这个数转换成2进制后,输出1的个数

示例1

输入

5

输出

2

代码1:

//第十五题求int型正整数在内存中存储时1的个数
#include
#include
using namespace std;
int main()
{
	int iNum;
	cin >> iNum;
	char pNum[33]{ 0 };
	int iCount = 0;
	itoa(iNum, pNum, 2);
	for (int i = 0; pNum[i] != '\0'; i++)
	{
		if (pNum[i] == '1')
		{
			iCount += 1;
		}
	}
	
	cout << iCount << endl;
	system("pause");
	return 0;
}

 

代码2:

//第十五题求int型正整数在内存中存储时1的个数
#include
using namespace std;
int main()
{
	int iNum;
	cin >> iNum;
	int iCount = 0;
	while (iNum)
	{
		if (iNum & 1)
		{
			iCount += 1;
		}
		iNum = iNum >> 1;
	}
	cout << iCount << endl;
	return 0;
}

 

代码3:

//第十五题求int型正整数在内存中存储时1的个数
#include
using namespace std;
int main()
{
	int iNum;
	cin >> iNum;
	int iCount = 0;
	while (iNum)
	{
		iCount += iNum & 1 ? 1 : 0;
		iNum = iNum >> 1;
	}
	cout << iCount << endl;
	return 0;
}

 

你可能感兴趣的:(刷题-华为机试)