Why does the right-shift operator produce a zero instead of a one?

Posted by mrt181 on Stack Overflow See other posts from Stack Overflow or by mrt181
Published on 2010-06-09T16:35:15Z Indexed on 2010/06/09 16:42 UTC
Read the original article Hit count: 197

Filed under:
|

Hi, i am teaching myself java and i work through the exercises in Thinking in Java.

On page 116, exercise 11, you should right-shift an integer through all its binary positions and display each position with Integer.toBinaryString.

public static void main(String[] args) {
int i = 8;
System.out.println(Integer.toBinaryString(i));
int maxIterations = Integer.toBinaryString(i).length();
int j;
for (j = 1; j < maxIterations; j++) {
    i >>= 1;
System.out.println(Integer.toBinaryString(i));
}

In the solution guide the output looks like this:

1000
1100
1110
1111

When i run this code i get this:

1000
100
10
1

What is going on here. Are the digits cut off?

I am using jdk1.6.0_20 64bit. The book uses jdk1.5 32bit.

© Stack Overflow or respective owner

Related posts about java

Related posts about bit-shift