>> (Décalage des bits vers la droite)

Description

l'opérateur de décalage à droite >> entraîne le décalage des bits vers la droite de l'expression entière située à gauche de l'opérateur d'un nombre de positions spécifié par l'expression numérique entière de droite.

Davantage d'information sur les math binaires peuvent être trouvés ici : Tutoriel sur les math binaires du "terrain de jeux".

Syntaxe

variable >> nombre_de_bits

Paramètres

  • variable: une variable de type entier (byte, int, long)
  • nombre_de_bits: nombre entier ≤ 32, correspondant au nombre de bits à décaler.

Exemple

int a = 40; // binaire: 0000000000101000 int b = a >> 3; // binaire: 0000000000000101, or 5 en décimal

※ Remarque:

Quand vous décalez x de y bits vers la droite (x>>y), et que le bit le plus fort de x est 1, le comportement dépend du type exact de donnée de x. Si x est de type int, le bit le plus fort est le bit de signe, déterminant si x est négative ou non, comme discuté auparavant. Dans ce cas, le bit de signe est copié (sans être lui-même modifié) dans les bits de poids inférieurs, pour des raisons historiques mystérieuses :

int x = -16; // binary: 1111111111110000 int y = x >> 3; // binary: 1111111111111110

Ce comportement, appelé "extension du signe", n'est souvent pas le comportement que vous souhaitez. Au lieu de cela, vous voudriez plutôt que des 0 soient décalés depuis la gauche. En considérant que le fonctionnement du décalage vers la droite est différent pour les expressions de type int non signées, vous pouvez utiliser un type de donnée qui supprime les bits copiés depuis la gauche :

int x = -16; // binary: 1111111111110000 int y = (unsigned int)x >> 3; // binary: 0001111111111110

Si vous faîtes attention d'éviter le mécanisme "d'extension de signe", vous pouvez utiliser l'opérateur de décalage vers la droite >> comme une façon de diviser par des puissances de 2. Par exemple :

int x = 1000; int y = x >> 3; // integer division of 1000 by 8, causing y = 125.
Please note: These are affiliate links. If you buy the components through these links, We may get a commission at no extra cost to you. We appreciate it.