#include <iostream> using namespace std; void caculate(int num){ int cnt = 0; while(num != 0){ if(num%2 == 1){ cnt++; } num = num/2; } cout << cnt << endl; } int main() { int num; while(cin >> num){ caculate(num); } } // 64 位输出请用 printf("%lld")
使用求余和触发,停止条件是 最后 1%2 = 1 1/2 = 0时,因为要计算最后一个1,所以是0的时候停下