La rotation en mathématique est une opération qui multiplie par la base ou divise par la base selon le sens de la rotation.
avec 2023 pour exemple
si on fait une rotation à gauche de 2023 on va obtenir 20230 (on a bien multiplié par 10 notre nombre)
si on fait une rotation à droite de 2023 on va obtenir une 202,3 (on a bien divisé par 10 )
on va partir de 10 ou 0x0A ou 00001010
si on fait une rotation à gauche (en Electronique c'est relativement facile à faire , un microprocesseur sait faire )
00010100 ce qui nous donne 0x14 ou 20 en décimal ! ce qui fait une multiplication par 2
si on fait une rotation à droite et que l'on reste sur 8 bits cela donne:
00000101 ce qui nous donne 0x05 ou 5 en décimal ! ce qui fait un division par 2
la rotation à gauche << et à droite >>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
unsigned char var; /* on se limite à 8 bits */
var =10;
printf("La valeur de 0x%x avec un décalage a gauche 0x%x et à droite 0x%x\n",var,var<<1,var>>1);
/* 1 nombre de décalage */
return EXIT_SUCCESS;
}
bruno@elliott:~/Works/langage_C/rotation$ gcc rotation.c -o rotation -Wall -ansi -pedantic -g
bruno@elliott:~/Works/langage_C/rotation$ ./rotation
La valeur de 0xa avec un décalage a gauche 0x14 et à droite 0x5