筆試-二進制中1的個數

題目描述:
請實現一個函數,輸入一個整數,輸出該數二進制表示中1的個數。

輸入描述:
輸入的第一行爲一個無符號的整形數字

輸出描述:
輸出一個整數表示該數二進制中1的個數

#include<iostream>
using namespace std;

int numberHas1OfSimple(unsigned int input);
int numberHas1OfUp(unsigned int input);

int main()
{
	unsigned int input;
	cin>>input;
	int result=numberHas1OfSimple(input);
	printf("%d",result);	
} 

//簡單版 
int numberHas1OfSimple(unsigned int input)
{
	int number=0;
	unsigned int index=1;
	while(index){
		if(index & input){
			number++;
		}
		index=index<<1; 
	}
	return number;
}

//升級版
int numberHas1OfUp(unsigned int input)
{
	int number=0;
	while(input){
		input=(input-1) & input;
		number++;
	}
	return number;	
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章