Partager via


_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.

unsigned char _rotr8( 
   unsigned char value, 
   unsigned char shift 
);
unsigned short _rotr16( 
   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

_rotr8

x86, ARM, x64

_rotr16

x86, ARM, x64

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

Notes

Contrairement à une opération de décalage vers la droite, lors de l'exécution d'une rotation vers la droite, les bits de poids faible qui se trouvent hors limite sont placés dans les positions de bits de poids fort.

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));
}
  

Voir aussi

Référence

_rotl8, _rotl16

intrinsèques du compilateur