计算二进制中的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;
}

 

posted on 2012-04-05 12:13  Try86  阅读(203)  评论(0)    收藏  举报