计算二进制中的1的个数
实现自Matrix67!
//计算二进制中的1的个数
//分治思想
#include <stdio.h>
int main() {
int n;
while (scanf("%d", &n) != EOF) {
n = (n & 0x55555555) + ((n >> 1) & 0x55555555);
n = (n & 0x33333333) + ((n >> 2) & 0x33333333);
n = (n & 0x0F0F0F0F) + ((n >> 4) & 0x0F0F0F0F);
n = (n & 0x00FF00FF) + ((n >> 8) & 0x00FF00FF);
n = (n & 0x0000FFFF) + ((n >> 16) & 0x0000FFFF);
printf ("%d\n", n);
}
return 0;
}
浙公网安备 33010602011771号