_rotl8, _rotl16
Section spécifique à Microsoft
Faire pivoter les valeurs d'entrée vers la gauche pour le bit le plus significatif (MSB) d'un nombre spécifié de positions de bits.
unsigned char _rotl8(
unsigned char value,
unsigned char shift
);
unsigned short _rotl16(
unsigned short value,
unsigned char shift
);
Paramètres
[in] value
Valeur qui doit faire l'objet d'une rotation.[in] shift
Nombre de bits de rotation.
Valeur de retour
Valeur ayant fait l'objet d'une rotation.
Configuration requise
Intrinsèque |
Architecture |
---|---|
_rotl8 |
x86, ARM, x64 |
_rotl16 |
x86, ARM, x64 |
Fichier d'en-tête <intrin.h>
Notes
Contrairement à une opération de décalage vers la gauche, lors de l'exécution d'une rotation vers la gauche, les bits de poids fort qui se trouvent hors limite sont placés dans les positions de bits les moins significatives.
Exemple
// rotl.cpp
#include <stdio.h>
#include <intrin.h>
#pragma intrinsic(_rotl8, _rotl16)
int main()
{
unsigned char c = 'A', c1, c2;
for (int i = 0; i < 8; i++)
{
printf_s("Rotating 0x%x left by %d bits gives 0x%x\n", c,
i, _rotl8(c, i));
}
unsigned short s = 0x12;
int nBit = 10;
printf_s("Rotating unsigned short 0x%x left by %d bits gives 0x%x\n",
s, nBit, _rotl16(s, nBit));
}