#include<bits/stdc++.h>
using namespace std;
int main(){
long long n;
long long ant=0;
while(scanf("%lld",&n)!=EOF){
ant=0;
for(int i=1;i<=64;i++){
if(n&1){
ant++;
}
n=n>>1;
}
cout<<ant<<endl;
}
return 0;
}
这题主要用到位运算&的作用是取最低位进行与运算>>1将二进制数向右移动一位
问题出在ant的置零每个数开始前都要对ant重置
注意多个输入一般结尾要换行