java de manipulation de bits

byte x = -1;
for(int i = 0; i < 8; i++)
{
    x = (byte) (x >>> 1);
    System.out.println("X: " + x);
}

Comme je le comprends, java stocke les données en complément à deux, sens -1 = 11111111 (selon wikipedia).

Aussi, à partir de la java docs:
"Le modèle de bits est donnée par la gauche opérande, et le nombre de postes à changement de la partie droite de l'opérande. La unsigned décalage à droite de l'opérateur ">>>" l'évolution d'un zéro dans la position la plus à gauche, tandis que la position la plus à gauche après ">>" dépend de l'extension du signe. "

Ce qui signifie qu' >>> décalera d'un 0 à gauche de la plupart des bits à chaque fois. J'attends donc ce code à

itération: représentation binaire de x

0: 11111111

1: 01111111

2: 00111111

3: 00011111

...etc

Cependant, ma sortie est toujours X: -1, sens (je suppose) que >>> est de mettre le bit de signe dans la plus à gauche de la position. J'ai donc essayer >>, et même résultat.

Ce qu'il se passe? Je m'attends à ma sortie: X: -1, x: 127, x: 63, etc.

C'est l'un des problèmes en Java casse-têtes.

OriginalL'auteur jbu | 2009-02-19