这是一个program problem from leetcode。它给出一个unsigned int n,要求你返回位'1'的数字;
int hammingWeight(uint32_t n) {
int num=0;
for(;n!=0;n=n>>1)
{
if(n&1==1)
{
num++;
}
}
return num;
}
这完美无缺,但
int hammingWeight(uint32_t n) {
int num=0;
for(;n!=0;n=n>>1)
{
if(1==n&1)
{
num++;
}
}
return num;
}
这个有时候无法工作!我想如果用uint32_t计算出来有问题,但我无法理解这一点。
答案 0 :(得分:13)
==
的优先级高于&
。因此,
n&1==1
是n & (1==1)
,而1==n&1
是(1==n) & 1
。