我在许多编程语言中看到&
的使用,因为我喜欢groovy很多,我尝试使用以下代码来查找&
的使用:
a = 1 ;
println a & 2
我将输出设为0
。当我更改a
的值时,我会得到不同的答案。
所以任何人都可以说简单英语中的Groovy等编程语言中使用&
,可能只用一种语言的简单例子吗?
提前致谢。
答案 0 :(得分:7)
&
通常是按位和(在整数参数上)或非短路逻辑和(在布尔参数上)。
按位 - 并返回一系列位(通常表示为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
在允许运算符重载的语言中,库有时会重载&
以进行集合交集或元素位交叉。
答案 1 :(得分:4)
在Google中搜索“Groovy Operator”,第一个结果产生:http://groovy.codehaus.org/Operators
通常,所有运算符supported in Java在Groovy中都是相同的。
进一步在http://download.oracle.com/javase/tutorial/java/nutsandbolts/operators.html:
bitwise AND &
在Google中搜索“按位与”,第一个结果是:http://en.wikipedia.org/wiki/Bitwise_operation#AND
和
按位AND采用两个相等长度的二进制表示 对每对相应位执行逻辑AND运算。 对于每对,如果第一位为1,则结果为1,第二位为1 位是1;否则,结果为0.例如:
0101 (decimal 5) AND 0011 (decimal 3) = 0001 (decimal 1)
完成所有工作只需不到5分钟。