_rotr8, _rotr16

Section spécifique à Microsoft

Faire pivoter les valeurs d'entrée vers la droite pour le bit le moins significatif (LSB) d'un nombre spécifié de positions de bits.

Syntaxe

unsigned char _rotr8(
   unsigned char value,
   unsigned char shift
);
unsigned short _rotr16(
   unsigned short value,
   unsigned char shift
);

Paramètres

valeur
[in] Valeur à faire pivoter.

shift
[in] Nombre de bits à faire pivoter.

Valeur retournée

Valeur ayant fait l'objet d'une rotation.

Spécifications

Intrinsic Architecture
_rotr8 x86, ARM, x64, ARM64
_rotr16 x86, ARM, x64, ARM64

Fichier<d’en-tête intrin.h>

Notes

Contrairement à une opération de décalage droit, lors de l’exécution d’une rotation droite, les bits de bas ordre qui tombent hors du bas de gamme sont déplacés dans les positions de bits de haut ordre.

Exemple

// rotr.cpp
#include <stdio.h>
#include <intrin.h>

#pragma intrinsic(_rotr8, _rotr16)

int main()
{
    unsigned char c = 'A', c1, c2;

    for (int i = 0; i < 8; i++)
    {
       printf_s("Rotating 0x%x right by %d bits gives 0x%x\n", c,
                i, _rotr8(c, i));
    }

    unsigned short s = 0x12;
    int nBit = 10;

    printf_s("Rotating unsigned short 0x%x right by %d bits "
             "gives 0x%x\n",
            s, nBit, _rotr16(s, nBit));
}
Rotating 0x41 right by 0 bits gives 0x41
Rotating 0x41 right by 1 bits gives 0xa0
Rotating 0x41 right by 2 bits gives 0x50
Rotating 0x41 right by 3 bits gives 0x28
Rotating 0x41 right by 4 bits gives 0x14
Rotating 0x41 right by 5 bits gives 0xa
Rotating 0x41 right by 6 bits gives 0x5
Rotating 0x41 right by 7 bits gives 0x82
Rotating unsigned short 0x12 right by 10 bits gives 0x480

FIN de la section spécifique à Microsoft

Voir aussi

_rotl8, _rotl16
Intrinsèques du compilateur