题意:输入一个无符号int,count该数的二进制表达中1的个数
思路:建立map映射表(0~15(Ox)--->1的个数)map[16],int:4字节 总计8个0x数,如果将map映射表增大,一次处理一个byte ,map[256,只需4次循环]有点麻烦,
public int hammingWeight(int n) {
int map[] = new int[]{0, 1, 1, 2, 1, 2, 2,
3, 1, 2, 2, 3, 2, 3, 3, 4};
int res = 0;
for(int i = 0; i < 32; i+=4){
res += map[(int)(n >> i) & 0xf];
}
return res;
}