The problem is, as told before (long time ago), that x get upcasted to int (sign-extended) before doing the shift.
Doing a "bit-to-bit" conversion should help:
byte x = -1;
for(int i = 0; i < 8; i++)
{
x = (byte) ((x & 0xFF) >>> 1);
System.out.println("X: " + x);
}