统计X中值为一的二进制位数

统计X中值为1的二进制位数。
int bitcount(unsigned x)
{
      int b;
      for(b = 0; x != 0; x >>= 1)
          if(x & 01)
          b++;
      return b;
}
请问一下,这个X&01这个表达式该怎么解释,貌似这个式子成立,就必须执行b++了!不是很明白,求好心人解惑先。
------解决方案--------------------
(x & 1)  就是当x的最后一位是1的时候为真

------解决方案--------------------
按位右移,判断最后一位是否为1,直到没有1为止。
也可用std::bitset
------解决方案--------------------
引用:
这么理解题目是对的,但是感觉这么说不严谨,因为为真为假是逻辑运算符的那个啥的,这个&是位运算符。


if 中为 0 则为假,非 0 都是真