Skip to content Skip to sidebar Skip to footer

Logical Vs. Bitwise Operator And

I don’t understand the difference between & and and, even if I read some other questions about it. My code is: f=1 x=1 f==1 & x==1 Out[60]: True f==1 and x==1 Out[61]:

Solution 1:

The issue is that & has higher operator precedence than ==.

>>> (f == 1) & (x == 2)
True>>> f == (1 & x) == 2False

Perhaps this seems unintuitive, but & is really meant to be used between numbers for particular kinds of calculations:

>>>3 & 5
1

so it has similar precedence to operators like + and *, which sensibly should be evaluated before ==. It's not meant to be used in a similar manner to and at all.

Solution 2:

The problem is that '&' has higher priority than ==. If you put your last statement like:

(f==1) & (x==2)

You will get your desired result.

Solution 3:

In the second case, your code is:

f == (1 & x) == 2

1 & 2 is 0:

00000001
00000010 &
--------
00000000

So your final statement looks:

1 == 0 == 2

Which is False.

Post a Comment for "Logical Vs. Bitwise Operator And"