logo
Décalage au niveau binaire.

Tout comme en base décimale un décalage à gauche représente une multiplication par 10, en base binaire, un décalage à gauche correspond à une multiplication par 2.

A contrario, le décalage à droite représente une division dans les mêmes proportions.

Décalage logique

Un décalage logique consiste à supprimer un bit d'un côté du vecteur pour le remplacer par un zéro de l'autre côté.

Décalage à gauche - left Shift

   00010111 (+23) LEFT-SHIFT
=  00101110 (+46)
décalage binaire à gauche

On note que sur une architecture de taille figée, le bit de poids fort peut être perdu (dépassement de capacité), et donc le résultat incorrect si l'on souhaitait réaliser une multiplication par deux. De plus, si le complément à deux est utilisé pour représenter les nombres négatifs, le bit de signe peut être altéré, donnant un résultat de signe opposé à l'opérande :

   10110111 (-73) LEFT-SHIFT
=  01101110 (+110)

Décalage à droite - right Shift

Le décalage à droite représente une division entière par 2. Si le bit de poids faible est à 1, c'est-à-dire que le nombre est impair, celui-ci sera perdu, conformément au principe de la division entière dans laquelle il ne peut pas y avoir de partie fractionnaire.

   00010111 (+23) RIGHT-SHIFT
=  00001011 (+11)
décalage binaire à droite

A consulter :

  1. Informatique Lycée

source : wikipedia CC BY NC SA  ( Christophe Béasse - Février 2019 )