Przesuniecie binarne

Odpowiedz Nowy wątek
2018-10-08 10:47
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

edytowany 3x, ostatnio: killan, 2018-10-08 10:57

Pozostało 580 znaków

2018-10-08 10:56

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/javas[...]e7/html/jls-15.html#jls-15.19

edytowany 7x, ostatnio: Hagefid, 2018-10-08 11:01

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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