Si vous ne comprenez pas ces opérateurs cela n'est pas important, vous n'en aurez probablement pas l'utilité.
Pour ceux qui voudraient comprendre, rendez-vous aux chapitres suivants :
Ce type d'opérateur traite ses opérandes comme des données binaires
d'une longueur de 32 bits,
plutôt que des données décimales, hexadécimales ou octales.
Ces opérateurs traitent ces données selon leur représentation binaire
mais retournent des valeurs numériques standard dans leur format d'origine.
Les opérateurs suivants effectuent des décalages sur les bits, c'est-à-dire
qu'ils décalent chacun des bits d'un nombre de positions vers la gauche ou vers la droite.
La première opérande désigne la donnée sur laquelle on va faire le décalage,
la seconde désigne le nombre de décalages.
<<,
Décalage à gauche,
Décale les bits vers la gauche (multiplie par 2 à chaque décalage).
Les zéros qui sortent à gauche sont perdus, tandis que des zéros sont
insérés à droite,
6 << 1 (110 << 1),
12 (1100),
----
>>,
Décalage à droite avec conservation du signe,
Décale les bits vers la droite (divise par 2 à chaque décalage).
Les zéros qui sortent à droite sont perdus, tandis que le bit non nul
de poids plus fort est recopié à gauche,
6 >> 1 (0110 >> 1),
3 (0011)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 15 nov. 2007 à 12:38
Précision TRES importante.
Le C traduira les décalages avec ou sans conservation signe et en rotation au lieu de simple shift selon que sera nbr signé ou non (int ou DWORD), simple shift pour DWORD.
Pour résumer:
int n;
n >>= 2;
donnera: sar eax, 2
DWORD n;
n >>= 2;
donnera: shr eax, 2
"probablement jamais l'utilité": c'est une plaisanterie j'espère.
fatenov
Messages postés16Date d'inscriptionlundi 8 octobre 2007StatutMembreDernière intervention23 novembre 2007 15 nov. 2007 à 13:16
Cela m'a vraiment échappé,
En somme si je veux traduire cette instruction en un autre language ou en un simple desciption mathématique, ce sera quoi la signification ou les effets?
Vous n’avez pas trouvé la réponse que vous recherchez ?
fatenov
Messages postés16Date d'inscriptionlundi 8 octobre 2007StatutMembreDernière intervention23 novembre 2007 15 nov. 2007 à 13:55
Je n'ai bien compris la remarque de BruNews, mais je me rend compte que ce n'est pas un simple multiplication par 2 avec les bits alloués pour le signe pour dans le cas de très grand nombre où le décalage nécessite une rotation.
Je pensais que dans mon cas il s'agit d'indice de tableau dont pas de pbl de signe et non plus de taille, donc ça marche bien cm muptiplication.
Mais les indices sont de type int et ce type contient les bits de signe.
Donc je ne comprends toujours pas comment je dois interpréter mathématiquement cette instruction.