Przesuniecie binarne

Przesuniecie binarne
killan
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Kopiuj
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

HA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 115
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.