Partager via


__ll_rshift

Section spécifique à Microsoft

Déplace une valeur 64 bits spécifiée par le premier paramètre à droite, par un certain nombre de bits spécifiés par le deuxième paramètre.

Syntaxe

__int64 __ll_rshift(
   __int64 Mask,
   int nBit
);

Paramètres

Masque
[in] Valeur entière 64 bits à déplacer vers la droite.

nBit
[in] Nombre de bits à déplacer, modulo 64 sur x64 et modulo 32 sur x86.

Valeur retournée

Masque décalé par nBit bits.

Spécifications

Intrinsic Architecture
__ll_rshift x86, x64

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

Notes

Si le deuxième paramètre est supérieur à 64 sur x64 (32 sur x86), ce nombre est pris modulo 64 (32 sur x86) pour déterminer le nombre de bits à déplacer. Le ll préfixe indique qu’il s’agit d’une opération sur long long, un autre nom pour __int64, le type intégral signé 64 bits.

Exemple

// ll_rshift.cpp
// compile with: /EHsc
// processor: x86, x64
#include <iostream>
#include <intrin.h>
using namespace std;

#pragma intrinsic(__ll_rshift)

int main()
{
   __int64 Mask = - 0x100;
   int nBit = 4;
   cout << hex << Mask << endl;
   cout << " - " << (- Mask) << endl;
   Mask = __ll_rshift(Mask, nBit);
   cout << hex << Mask << endl;
   cout << " - " << (- Mask) << endl;
}

Sortie

ffffffffffffff00
- 100
fffffffffffffff0
- 10

Remarque

Si _ull_rshift elle a été utilisée, le MSB de la valeur décalée à droite aurait été égal à zéro, de sorte que le résultat souhaité n’aurait pas été obtenu dans le cas d’une valeur négative.

FIN de la section spécifique à Microsoft

Voir aussi

Intrinsèques du compilateur
__ll_lshift
__ull_rshift