title: Décalage circulaire
text: # Décalage circulaire
  
  Un décalage circulaire est une opération sur une liste ordonnée (ou n-uplet), consistant à faire passer le dernier élément au début et à décaler tous les autres ; ou à l'inverse, faire passer le premier élément à la fin, et décaler les autres. Cette opération peut être répétée de manière récursive.
  
  Il s'agit donc d'une permutation circulaire particulière, de même longueur que l'ensemble des n éléments sur lequel elle est définie.
  
  Par exemple, si l'on prend la liste (a, b, c) — c'est un triplet —, alors ses décalages circulaires successifs sont :
  
  * (a, b, c) ;
  * (c, a, b) ;
  * (b, c, a).
  
  De manière générale, si l'on a un n-uplet
  
      $(a_1,$ $a_2,$ …, $a_n)$
  
  alors les décalages circulaires sont obtenus en appliquant l'algorithme récursif suivant :
  
      premier décalage
         $a^1_1$ = $a_n$
         pour 1 < i < n, $a^1_{i+1}$ = $a_i$
      j e décalage (j < n) :
         $a^j_1$ = $a^{j-1}_n$
         pour 1 < i < n, $a^j_{i+1}$ = $a^{j-1}_i$
  
  ## Utilisation en informatique
  
  En informatique, le décalage circulaire décale tous les bits de l'opérande considéré. Lorsque l'opérande est un ensemble d'octets représentant un nombre, cet opérateur ne conserve pas le signe du nombre ni la mantisse et l'exposant. Contrairement aux registres à décalage, les places laissées vacantes par le décalage ne sont pas laissées vides mais sont remplies par les bits poussés hors de l'opérande.
  
  Le décalage circulaire est souvent utilisé en cryptographie
  
  Exemple
  
      Si la séquence de bits 0110 1111 1010 0011 est soumise à un décalage circulaire de quatre bits vers la gauche, le résultat est 1111 1010 0011 0110
  
  On peut remarquer que le quartet le plus à gauche, 0110, devient le quartet le plus à droite.
  
  