统计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 都是真
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 都是真