Partager via


Opérateurs de décalage : >> et <<

expression << expression
expression >> expression

Notes

Ces opérateurs sont comme suit :

  • Décalage vers la droite (>>)

  • Décalage vers la gauche (<<)

Les deux opérandes des opérateurs de décalage doivent être des types intégraux.Promotions intégrales sont effectuées conformément aux règles décrites dans Promotions intégrales.Le type du résultat est identique au type de l'opérande gauche promue.La valeur d'une expression de décalage vers la droite x >> y est x / 2yet la valeur d'une expression de gauche MAJ x << y is x * 2y.

Le résultat n'est pas défini si l'opérande de droite d'une expression de décalage est négatif ou si l'opérande droit est supérieur ou égal au nombre de bits de l'opérande de gauche (promu).Aucune opération de décalage n'est effectuée si l'opérande de droite est zéro (0).

L'opérateur de décalage vers la gauche provoque le modèle binaire dans le premier opérande doit être décalé vers la gauche par le nombre de bits spécifié par le second opérande.Libérées par l'opération de décalage de bits sont à zéro.Il s'agit d'un décalage logique au lieu d'une opération de décalage et rotation.

L'opérateur de décalage vers la droite provoque le modèle binaire dans le premier opérande doit être décalé vers la droite par le nombre de bits spécifié par le second opérande.Libérées par l'opération de décalage de bits sont remplis par des zéros pour les quantités non signées.Pour les quantités signées, le bit de signe est propagé vers les positions de bit libérées.Le travail d'équipe est un décalage logique si l'opérande de gauche est une quantité non signée ; dans le cas contraire, il est un décalage arithmétique.

Spécifique à Microsoft

Le résultat d'un décalage vers la droite d'une quantité négative signé est dépendant de la mise en oeuvre.Bien que MicrosoftC++ propage le bit le plus significatif pour remplir les positions de bit libérées, il n'y a aucune garantie que d'autres implémentations seront également le faire.

Exemple

// expre_Shift_Operators.cpp
// compile with: /EHsc
// Demonstrate shift operators
#include <iostream>
using namespace std;

int main() {
   cout   << "5 times 2 is " << (5 << 1) << endl
         << "20 divided by 4 is " << (20 >> 2) << endl;
}

Sortie

  
  

Voir aussi

Référence

Expressions avec les opérateurs binaires

Opérateurs C++

Priorité des opérateurs et d'associativité

Concepts

Au niveau de le bit opérateurs de décalage