• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

>>>

 
Hung Chang
Greenhorn
Posts: 16
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 5089
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 158
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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 Bruesch
Ranch Hand
Posts: 158
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 5089
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 16
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
wow, now i understand^^
thanx guys..
 
Hung Chang
Greenhorn
Posts: 16
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
this Question comes from Jtips exam at mock exam1 number#27
 
Johannes de Jong
tumbleweed
Bartender
Posts: 5089
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hun look here Java FAQ 3.21 hope that helps.
 
Marilyn de Queiroz
Sheriff
Posts: 9066
12
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic