aspose file tools*
The moose likes Beginning Java and the fly likes >>> Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark ">>>" Watch ">>>" New topic
Author

>>>

Hung Chang
Greenhorn

Joined: Oct 21, 2001
Posts: 16
True or False?
Unsigned Right Shift on a Negative Integer always returns
a Positive Integer.
the answer is false..
why it is false..can someone help plz~
Johannes de Jong
tumbleweed
Bartender

Joined: Jan 27, 2001
Posts: 5089
Unsigned Right Shift
The word unsigned says it all. This means that the sign bit which is the left-most bit (also called high-order bit) is not included in the shift.
Michael Bruesch
Ranch Hand

Joined: Sep 23, 2001
Posts: 158
If you mean Shift-Right-With-Zero-Fill, the >>> operator, then that's probably a trick question. If you shift an integer 0 or any multiple of 32 bits to the right, you will get the same number again. Take this example:
int x = -1;
x = x >>> 0; // x is still -1
x = x >>> 32 // x is still -1
And so on. Now honestly I'm not sure why you get back to the same number after 32, unless it somehow subtracts the highest multiple of 32 from the bit shift number, then shifts??? Dangit, now I have a question...
------------------
Michael J Bruesch
Codito, ergo sum...
I code, therefore I am.
http://www.geocities.com/mjbruesch


Michael J Bruesch<br /><i>I code, therefore I am.</i>
Michael Bruesch
Ranch Hand

Joined: Sep 23, 2001
Posts: 158
Alright, found it.

The number of bits shifted is always in the range modulus 32 for an int value, and in the range modulus 64 for a long value.
A Programmer's Guide to Java Certification by Khalid Mughal

That's why a 32 shift distance is the same as a 0 shift distance.
------------------
Michael J Bruesch
Codito, ergo sum...
I code, therefore I am.
http://www.geocities.com/mjbruesch
Johannes de Jong
tumbleweed
Bartender

Joined: Jan 27, 2001
Posts: 5089
Whow I have egg on my face
According to sun :
"unsigned right shift, >>> , changes sign of negative numbers"
see this
So you Hung the answer should be true. Where did you get the the question and answer ??
Hung Chang
Greenhorn

Joined: Oct 21, 2001
Posts: 16
wow, now i understand^^
thanx guys..
Hung Chang
Greenhorn

Joined: Oct 21, 2001
Posts: 16
this Question comes from Jtips exam at mock exam1 number#27
Johannes de Jong
tumbleweed
Bartender

Joined: Jan 27, 2001
Posts: 5089
Hun look here Java FAQ 3.21 hope that helps.
Marilyn de Queiroz
Sheriff

Joined: Jul 22, 2000
Posts: 9047
    
  10
The key is "always"
Unsigned Right Shift on a Negative Integer always returns
a Positive Integer.
The answer is false.
Try this:

output = -64

According to RHE, "shifts of ints use only the low-order 5 bits". This can produce an anomalous result.

Basically you do modulo on the right operand, in this case 32 % 32 = 0, so no shift takes place and the result is still negative.

JavaBeginnersFaq
"Yesterday is history, tomorrow is a mystery, and today is a gift; that's why they call it the present." Eleanor Roosevelt
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: >>>