int a = 2;
a = (a&-a);
那么'&'的目的是什么?在这个街区?
结果是“2”
答案 0 :(得分:5)
这是按位“和”运算符。用更多的空间可能会更清楚
a = a & -a;
甚至
a = a bitand -a;
答案 1 :(得分:4)
这是按位和运算符。只需看看http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B
即可 a & -a
的组合可用于查找已设置的最低有效位。例如:
12 = 00001100
-12 = 11110100
--------------
12 & -12 = 00000100
答案 2 :(得分:3)
&
是按位的,但是完整语句的作用是过滤掉数字中的第一个1
,例如
a 11010
~a 00101
-a 00110
a&-a 00010
答案 3 :(得分:0)
这是一个按位and
,基本上,它需要2个变量,对于每个位,只有当两个数字在该位置都有1
时它才为1
所以a
是
11101010
比-a
可能代表
00010110
所以如果你和他们在一起你得到
11101010
00010110
---------------
00000010