-1
int a = 2;
a = (a&-a);

では、このブロックの「&」の目的は何ですか?

結果は「2」

4

4 に答える 4

5

それがビットごとの「and」演算子です。より多くのスペースでより明確になる可能性があります

a = a & -a;

あるいは

a = a bitand -a;
于 2013-10-10T15:18:25.553 に答える
3

これは、ビットごとの and 演算子です。http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2Bをご覧ください。

の組み合わせをa & -a使用して、設定されている最下位ビットを見つけることができます。例:

      12 = 00001100
     -12 = 11110100
     --------------
12 & -12 = 00000100
于 2013-10-10T15:18:50.723 に答える
2

はビット単位のand ですが、完全なステートメントで行うことは、数値&の最初のものを除外することです。1

a    11010
~a   00101
-a   00110
a&-a 00010
于 2013-10-10T15:23:26.793 に答える
0

これはビット単位andであり、基本的には 2 つの変数を取り、ビットごとに、両方の数値が1その位置に a を持っている場合にのみ 1 になります。

そうaです

11101010

-aおそらく2の賛辞で表されるよりも

00010110

あなたと彼らが一緒になれば

11101010
00010110
---------------
00000010
于 2013-10-10T15:24:11.297 に答える