CSAPP-3.49 二进制数各位累加

x是8字节,先用for统计各字节1的个数,然再折叠式地累加各字节的统计数,
最后取低8位,高56位就不知道是什么鬼了,也不用管

long fun_c(unsigned long x){
	long val = 0;
	for (int i = 0; i < 8; ++i){
		val += x & 0x0101010101010101;
		x >>= 1;
	}
	val += (val >> 32);
	val += (val >> 16);
	val += (val >> 8);
	return val & 0xff;
}