我想说明这段代码的区别
for(i = 32; i > 0; i--)
{
if(a&1 != 0) //bit mask
total += b;
a = a >> 1;
b = b << 1;
}
在代码中 & 用于“屏蔽”一点,如果使用它,结果将完全不同&&
。在那种情况下,表达式1
已被解释为真值 ( TRUE
),而不是用于保留其中一位的一位位置。正确的?但是,如果我这样做了,会发生什么:
for(i = 32; i > 0; i--)
{
if(a|1 != 0) //bit mask
total += b;
a = a >> 1;
b = b << 1;
}
在第一种情况下,1
它用于仅保留 LSB(最低有效位),即最右边的位,没有别的。取而代之的是什么|
?如果我做这个改变会有什么不同?