File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Beginning Java and the fly likes Bitwise operator  Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Bitwise operator  " | " " Watch "Bitwise operator  " | " " New topic
Author

Bitwise operator " | "

Ls chin
Ranch Hand

Joined: Jun 28, 2008
Posts: 99
Can anyone please explain what is a Bitwise operator which looks like "|"? I've read the online Java Tutorial and a few books but I still don't quite understand it.

For e.g. how do we know the bitwise value of 5 or 7? Do we hv to memorize it?

I've also seen SCJP question that looks like this:



Will the (++j) and/or the (i++) inside the "if" condition execute before (i += j)?

Thank you in advance.
chen owen
Greenhorn

Joined: Aug 05, 2008
Posts: 2
Hi LS chin,
maybe you don't know the difference with "|" and "||" .

"i==++j" will execute at first and "i++==j" will execute later.

"i==++j" will execute at first , and
if that is true , "i++==j" will execute ,
if thst is false , "i++==j" won't execute .
chenchen.
Ls chin
Ranch Hand

Joined: Jun 28, 2008
Posts: 99
Originally posted by chen owen:
"i==++j" will execute at first and "i++==j" will execute later.
Hi owen,

Thanks for your reply. Yea, I'm a bit confused by "|" and "||". With the "|" operator, it means that (i++ == j) will continue to execute, even if (i == ++j) value is false? So, it doesn't matter whether the right-side or the left-side value is true or false, both sides will execute?
Kaydell Leavitt
Ranch Hand

Joined: Nov 18, 2006
Posts: 689

Here is a URL to wikipedia.org on the binary number system and binary operations:
Binary numeral system (http://www.wikipedia.org

The following URL to simple.wikipedia.org is under construction and anybody can improve it:
Binary numeral system (simple.wikipedia.org)
[ August 06, 2008: Message edited by: Kaydell Leavitt ]
chen owen
Greenhorn

Joined: Aug 05, 2008
Posts: 2
hi LS chin:
yeah , you are right ! You can take a test to prove it .
Ls chin
Ranch Hand

Joined: Jun 28, 2008
Posts: 99
Hi Owen,
I tested the code by replacing the value of (i = 3) and the output shows that the right-side of "|" will execute even if the left-side is true. But for the "||" operator, it will short-circuit and will skip the right-side equation, therefore (i++ == j) will be ignored. Thanks!

Hi Kaydell,
Thanks for the links.

[ August 06, 2008: Message edited by: LS chin ]

[ August 06, 2008: Message edited by: LS chin ]
[ August 06, 2008: Message edited by: LS chin ]
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19680
    
  19

Please note that in your example, | is not a bitwise operator but a logical OR operator. Whether | is one or the other depends on the argument type - if they are boolean it's logical, if they're numerical (not float or double) it's bitwise, any other case is a compile error.


SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6
How To Ask Questions How To Answer Questions
Ls chin
Ranch Hand

Joined: Jun 28, 2008
Posts: 99
Hi Rob,

Thanks! In the example, "|" is a logical operator which does not short-circuit.

 
Don't get me started about those stupid light bulbs.
 
subject: Bitwise operator " | "