解题思路
位运算计算有多少个1.
与1 &运算。最低位1则结果为1,为0则结果为0.
然后向右位移一位。
代码
#include<stdio.h> int main() { int n, count, i; while (scanf("%d", &n) != EOF) { count = 0; for (i = 1; i < 32; i++) { count += (n & 1); n = n >> 1; } printf("%d\n", count); } return 0; }
这一题要分下下数据的特性,数据在计算机中以2进制存储,要么0要么1.正好有基于2进制的位运算。