我已经在许多编程语言中看到了&
的使用,因为我非常喜欢groovy,所以我尝试了以下代码来找到&
的使用:
a = 1 ;
println a & 2
我得到的输出是0
。当我改变a
的值,我得到不同的答案。
所以任何人都可以用简单的英语说出&
在Groovy这样的编程语言中的用途,可以用任何语言的简单示例?
&
通常是位与(整数参数)或非短路逻辑与(布尔参数)。
位-并返回一系列位(通常表示为int
类型),这些位只在公共集合
18 == 10010
6 == 00110
18 & 6 == 2 == 00010
这似乎就是Groovy代码中发生的事情。1 & 2 == 0
,因为1和2没有共享位。
非短路逻辑,与&&
相似,但
if (f() && g()) // g is only called if f returns false
if (f() & g()) // g is called even when f returns false
在允许操作符重载的语言中,库有时重载&
来实现集合交叉,或元素方向的位交叉。
在Google中搜索"Groovy Operator",第一个结果是:http://groovy.codehaus.org/Operators
一般来说,Java中支持的所有操作符在Groovy中都是相同的。
进一步查看http://download.oracle.com/javase/tutorial/java/nutsandbolts/operators.html:
bitwise AND &
在Google中搜索"Bitwise AND",第一个结果是:http://en.wikipedia.org/wiki/Bitwise_operation#AND
和
一个位与取两个相等长度和的二进制表示形式对每一对对应的位执行逻辑与运算。对于每一对,如果第一个位为1,第二个位为1,则结果为1位是1;否则,结果为0。例如:
0101 (decimal 5) AND 0011 (decimal 3) = 0001 (decimal 1)
不到5分钟就算出来了