題目1513:二進位制中1的個數

Rabbit誩發表於2015-02-15

用位運算,但是不要用n>>=1;如果n是負數的話,就不會停止,改用flag<<=1即可,當超過1<<32時,flag就為0 了

#include<cstdio>
#include<cstring>

int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		int n;
		scanf("%d",&n);
		int count = 0;
		int flag = 1;
		while(flag)
		{
			if(n&flag)
				count++;
			flag<<=1;
		}
		printf("%d\n",count);
	}
	return 0; 
}


相關文章