| 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: 679
|
|
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: 19216
|
|
|
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
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.
|
 |
 |
|
|
subject: Bitwise operator " | "
|
|
|