このコードとの違いを説明したい
for(i = 32; i > 0; i--)
{
if(a&1 != 0) //bit mask
total += b;
a = a >> 1;
b = b << 1;
}
コードでは、&はビットを「マスク」するために&&
使用されており、代わりに使用された場合、結果は完全に異なります。その場合、式は、ビットの1つを保持するために使用される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(最下位ビット)のみ、つまり右端のビットのみを保持するために使用されます。その代わりに何を|
しますか?この変更を行った場合の違いは何ですか?