Les entiers signés utilisent le bit de poids fort pour désigner le signe.
Donc, >>
préserve le signe, alors que >>>
ne le fait pas. C'est pourquoi >>
est appelé arithmétique décalage et >>>
est le décalage logique.
De cette façon, vous pouvez faire (en supposant des entiers de 32 bits) ce qui suit:
-10 >> 1
rendements -5 (0xFFFFFFF6 >> 1
cède 0xFFFFFFFB - remarquez le bit de poids fort reste le même.)
-10 >>> 1
rendements 2147483643 (0xFFFFFFF6 >>> 1
cède 0x7FFFFFFB -.. remarque que tous les bits ont été décalés, de sorte que le bit d'ordre élevé est présent à zéro le nombre est plus négatif selon la arithemetic twos-complément)
Pour les entiers positifs, >>
et >>>
agissent de la même façon puisque le bit de poids fort est déjà nul.
Il explique également pourquoi il n'y a pas besoin d'opérateur <<<
. Puisque le signe serait saccagé en faisant glisser les bits vers la gauche, il ne correspondrait à aucune opération arithmétique raisonnable.
doubles possibles: [Différence entre >>> >> et] (http://stackoverflow.com/ q/2811319/1529630), [Différence entre les opérateurs >>> et >>] (http: // stackoverflow.com/q/1972356/1529630) – Oriol