简体   繁体   中英

What's the use of & in Programming languages?

I have seen the use of & in many programming language and since I love groovy a lot I tried the following code to find the use of & :

​a = 1 ;
println a & 2​

I'm getting the output as 0 . When I change the values of a I get different answer's.

So any one can say whats the use of & in programming languages like Groovy in simple english, possibly with an simple example in any language?

Thanks in advance.

& is usually either bitwise-and (on integer arguments) or non-short-circuiting logical and (on boolean arguments).

bitwise-and returns a series of bits (usually represented as an int type) that have only the bits in common set

18          == 10010
6           == 00110
18 & 6 == 2 == 00010

This seems to be what is happening in your Groovy code. 1 & 2 == 0 since 1 and 2 share no bits in common.

Non-short-ciruiting logical and is similar to && but

if (f() && g())   // g is only called if f returns false
if (f() &  g())   // g is called even when f returns false

In languages that allow operator overloading, libraries sometimes overloaded & to do set intersection, or element-wise bit-intersection.

Searching "Groovy Operator" in Google, the first result yields: http://groovy.codehaus.org/Operators

In general all operators supported in Java are identical in Groovy.

Further in http://download.oracle.com/javase/tutorial/java/nutsandbolts/operators.html :

 bitwise AND & 

Searching for "Bitwise AND" in Google, the first result is: http://en.wikipedia.org/wiki/Bitwise_operation#AND

AND

A bitwise AND takes two binary representations of equal length and performs the logical AND operation on each pair of corresponding bits. For each pair, the result is 1 if the first bit is 1 AND the second bit is 1; otherwise, the result is 0. For example:

  0101 (decimal 5) AND 0011 (decimal 3) = 0001 (decimal 1) 

it takes less than 5 minute to work all that out.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM