Przesunięcie w prawo bez znaku

0

Witam. Przerabiam sobie Thinking in Java i doszedłem do rozdziału gdzie opisywany jest operator przesunięcia bez znaku. W książce jest napisane, że uzupełnia on zerami niezależnie od znaku. Spróbowałem sobie napisać prosty program testujący i wypełnił mi najstarsze bity 1 zamiast 0 jak napisane było w książce. Coś jest nie tak, czy ja gdzieś popełniam błąd w interpretacji?

package pl.piotr.first;

public class Glowna {

	public static void main(String[] args) {

		int a = -140;
		int b = 150;
		int l;
		
		System.out.println(Integer.toBinaryString(a));
		//System.out.println(Integer.toBinaryString(b));
		
		l = a>>>2;
		System.out.println(l);
		System.out.println(Integer.toBinaryString(l));
		
	}

}

Na wyjściu otrzymałem następujące dane:

11111111111111111111111101110100
1073741789
111111111111111111111111011101
1

Przecież 111111111111111111111111011101 to to samo co 00111111111111111111111111011101.
Przesunięcie jest, zera są, tylko przy wyświetlaniu ci je ucięło jako nieistotne:

11111111111111111111111101110100
00111111111111111111111111011101

11111111111111111111111101110100
111111111111111111111111011101

1 użytkowników online, w tym zalogowanych: 0, gości: 1