__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