Welcome to WebmasterWorld Guest from 54.224.0.153

Forum Moderators: open

Message Too Old, No Replies

# binary what where?

#### lucy24

12:32 am on Apr 26, 2014 (gmt 0)

#### Senior Member from US

joined:Apr 9, 2011
posts:13201

Quick question for someone who speaks javascript:

This expression
((gRoofLocked & 2^number) != 0)
evaluates to "true" for the appropriate values of the variables involved (currently 31 and some number in the range 1-4).
This expression
(gRoofLocked & (2^number) != 0)
does not.

Question: What, then, does it evaluate to? Is there some weird sequence of operators that I can't figure out?

The fate of the universe does not depend on my learning the answer. But it niggles at me anyway.

#### Fotiman

1:24 am on Apr 26, 2014 (gmt 0)

#### Senior Member from US

joined:Oct 17, 2005
posts:4988

The != operator has a higher precedence than the & operator, so your second expression can be written like this:
(gRoofLocked & ((2 ^ number) != 0))

I haven't plugged in any numbers, but I imagine that would give you different results than your first example, which would evaluate like this:
(((gRoofLocked & 2) ^ number) != 0)

[developer.mozilla.org...]

#### Fotiman

1:38 am on Apr 26, 2014 (gmt 0)

#### Senior Member from US

joined:Oct 17, 2005
posts: 4988

Note, one of these will evaluate to a boolean while the other will evaluate to a number.

#### lucy24

7:32 am on Apr 26, 2014 (gmt 0)

#### Senior Member from US

joined:Apr 9, 2011
posts:13201

Follow-up:

Timestamp says it took me pretty exactly seven hours to figure out that I don't mean 2^blahblah. I mean Math.pow(2,blahblah).

###

Working properly now.