判断一个整数的二进制表示中有多少个1:
下面的图是重点
32位的整数分别与下面的数与
0101 0101 0101 0101 0101 0101 0101 0101 1010 1010 1010 1010 1010 1010 1010 1010>>1
0011 0011 0011 0011 0011 0011 0011 0011 1100 1100 1100 1100 1100 1100 1100 1100>>2
0000 1111 0000 1111 0000 1111 0000 1111 1111 0000 1111 0000 1111 0000 1111 0000>>4
0000 0000 1111 1111 0000 0000 1111 1111 1111 1111 0000 0000 1111 1111 0000 1111>>8
0000 0000 0000 0000 1111 1111 1111 1111 1111 1111 1111 1111 0000 0000 0000 0000 >>16
直到0的重复次数是位数的一半即可。
如果让我们算8位的char中有几个1 我们只需要做大第3行即可