**
count 1的个数的方法
**
总结来自leetcode
1.内置函数方法【c/c++】
__builtin_popcount(x)
2.移位位计数
【前情提要】【二进制移位】
x>>1 x右移一位
x<<1 x左移
x: 001100
x>>1: 000110
x<<1: 011000
【计数方法】
每次看x的最低位是否是1。
怎么看?
将x和1做与,即
X&1
如果最低为是1,那么x&1也是1,否则0
因此每次查看x最后一位是否是1,然后右移一位,直到x=0
**
3.Brian Kernighan 算法
**
x=x&(x-1)
只要x不等于0,就循环上述操作,每操作一次就代表消除一个1,操作次数就是1的个数