Przesuniecie binarne

0

Czesc,
Dlaczego liczba dodatnia przy przesunięciu w prawo o -3 daje wynik 0?

int a = 0xAA; //170

		System.out.println("\na "+Integer.toBinaryString(a));
		a >>= -3;
		System.out.println("a "+Integer.toBinaryString(a));

a dlaczego gdy przesuwam w prawo o wartości -999999999 to mam 1010101? Jak to działa?
Output:

10101010
0

1

W przypadku podania liczby ujemnej rzeczywiste przesunięcie wynosi 32 - 3 czyli 29 bitów w prawo, co w przypadku przesunięcia liczby 0xAA daje 0.

https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.19

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