Jestem nowicjuszem w Javie i dowiedziałem się, że istnieją dwa operatory Right Shift w java >>
i >>>
, ale tylko jeden operator przesunięty w lewo <<
. Dlaczego tak jest?Dlaczego w środowisku Java działają dwa operatory przesunięcia w prawo i tylko jeden operator przesunięty w lewo?
6
A
Odpowiedz
9
Ponieważ operacje arytmetyczne i logiczne lewej przesunięcia są identyczne (from wikipedia).
Zauważ, co dzieje się z bitem znakowym (lewy skrajny bit) w obu zmianach po lewej stronie.
3
Operatory zmiany prawej to jedne z (>>
) i jedno bez rozszerzenia znaku (>>>
). Operacja przesunięcia w lewo nie ma składnika rozszerzenia znaku.
Na przykład, następujące określenia są oba spełnione:
(0x80000000 >> 1) == 0xC0000000
(0x80000000 >>> 1) == 0x40000000
Na podstawie tego, co wiesz o operatorach z prawą zmianą, czy masz jakieś pomysły? –
Jest to również wyjaśnione w [tutoriali] (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html). – PeterMmm
@PeterMmm przepraszam, strona nie została znaleziona – sum2000