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, botów: 0