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