这个用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; }
这个用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; }