File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Beginning Java and the fly likes A question about 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 "A question about bitwise operator" Watch "A question about bitwise operator" New topic

A question about bitwise operator

avseq anthoy
Ranch Hand

Joined: Apr 27, 2004
Posts: 106
int a = -1;
a = a>>>32;
i think a is
11111111 11111111 11111111 11111111
after >>>32
00000000 00000000 00000000 00000000
why a is -1 not 0?
[ April 28, 2004: Message edited by: avseq antohy ]

My Way,My Pace
Dirk Schreckmann

Joined: Dec 10, 2001
Posts: 7023
Welcome to JavaRanch, avseq!
Take a look at the description of how the shift operators work from section 15.19 of the Java Language Specification.
Note that it states, "If the promoted type of the left-hand operand is int, only the five lowest-order bits of the right-hand operand are used as the shift distance. It is as if the right-hand operand were subjected to a bitwise logical AND operator & (�15.22.1) with the mask value 0x1f. The shift distance actually used is therefore always in the range 0 to 31, inclusive."
In other words, you could consider that the value used to specify the amount to shift is first divided by 32, and the remainder of that division is used to perform the shift. If you specify 32, the remainder of dividing 32 by 32 is 0.

[How To Ask Good Questions] [JavaRanch FAQ Wiki] [JavaRanch Radio]
I agree. Here's the link:
subject: A question about bitwise operator
It's not a secret anymore!