剑指offer-二进制中1的个数

2016/05/24 C和C++基础

题目描述

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

方法一:

#include <iostream>
using namespace std;
int main(){
	int n;
	cin>>n;
	int sum=0;
    for (sum=0;n;++sum){
        n&=(n-1);
    }
	cout<<sum<<endl;
	system("pause");
}

方法二:

#include <iostream>
#include <vector>
using namespace std;

int NumberOf1(int n){
	unsigned int num=n;
	int sum=0;
	while(num>0){
		if(num%2==1)
			sum++;
		num=num>>1;
	}
	return sum;
}
int main(){
	cout<<NumberOf1(-1)<<endl;
	system("pause");
}

Search

    Post Directory