b/w 1==n&1 和 n&1==1 的区别,n 是一个 unsigned int
the difference b/w 1==n&1 and n&1==1 , n is an unsigned int
这是一个program problem from leetcode.它给出一个unsigned int n,要求你return位'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;
}
这个有时候不行!我猜当 1 用 uint32_t 计算时有问题,但我无法清楚地理解这一点。
==
的优先级高于 &
。因此,
n&1==1
是 n & (1==1)
,而
1==n&1
是 (1==n) & 1
.
这是一个program problem from leetcode.它给出一个unsigned int n,要求你return位'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;
}
这个有时候不行!我猜当 1 用 uint32_t 计算时有问题,但我无法清楚地理解这一点。
==
的优先级高于 &
。因此,
n&1==1
是n & (1==1)
,而1==n&1
是(1==n) & 1
.