题目描述:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
-
输入:
-
输入可能包含多个测试样例。
对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个整数。
。n保证是int范围内的一个整数。
-
输出:
-
对应每个测试案例,
输出一个整数,代表输入的那个数中1的个数。
-
样例输入:
-
3 4 5 -1
-
样例输出:
-
1 2 32
#include<iostream>
#include<stdio.h>
int main()
{
int n,sum=0;
std::cin>>n;
for(int i=0;i<n;i++)
{
sum=0;
int k;
scanf("%d",&k);
for(int i=0;i<32;i++)
{
sum=sum+(k&1); //不能写为 sum=sum+k&1; 由于优先级的问题
k=k>>1;
}
printf("%d\n",sum);
}
return 0;
}