这两题有什么区别吗。。。 求int型正整数在内存中存储时1的个数 int main(void) { int num,sum; while(scanf("%d",&num) != EOF) { sum = 0; for(int i = 0; i < sizeof(int) * 8; i++) sum += !!(num & (1 << i)); //取每一位 printf("%d\n",sum); } return 0; }