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

那么这个块中'&'的目的是什么?

结果是“2”

4

4 回答 4

5

这就是按位“与”运算符。有更多空间可能会更清晰

a = a & -a;

甚至

a = a bitand -a;
于 2013-10-10T15:18:25.553 回答
3

这是按位和运算符。看看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

&按位与,但完整语句的作用是过滤掉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可能在两个人的恭维中表现得像

00010110

所以如果你和他们在一起你会得到

11101010
00010110
---------------
00000010
于 2013-10-10T15:24:11.297 回答