这个用C语言很容易,以 %d 的形式把有符号数读入到一个unsinged中,这样计算机中保存的二进制序列就是其补码的序列了,这时再用位运算统计1的个数。
#include <stdio.h>
int main()
{
unsigned x, cnt = 0;
scanf("%d", &x);
while (x) {
cnt += x & 1;
x >>= 1;
}
printf("%d\n", cnt);
return 0;
} 
京公网安备 11010502036488号