Stephan: Unsigned Right Shift + byte ??

Hallo, ich habe ne Frage zu den Shift Operatoren in Java.
Der Unsigned Rightshift-Operator (>>>) soll ja ein Bitmuster nach
rechts verschieben und links eine 0 einfügen, also ohne
Berücksichtigung, ob das MSB 1 oder 0 war.

int i, j;
i = -64;
j = i >>> 1;
System.out.println(j); // Erg. ist 2147483616, da MSB unberücksichtigt

Wenn ich ich jetzt als Datentyp ein byte verwende dann kommt
folgendes raus:

byte i, j;
i = -64;
j = (byte) (i >>> 1); // Casten, da implizit auf int umgewandelt wurde
System.out.println(j); // Erg. ist -32??

Eigentlich sollte von links eine 0 nachgeschoben werden und der
Wert somit positiv sein. Anscheinend ist das Casten auf byte daran
schuld. Was passiert da und gibts dafür eine Lösung oder muss
ich für solche Dinge immer int verwenden?

vielen Dank für Eure Hilfe
Stephan