__ll_rshift
Sezione specifica Microsoft
Sposta un valore a 64 bit specificato dal primo parametro a destra, in base a un numero di bit specificato dal secondo parametro.
Sintassi
__int64 __ll_rshift(
__int64 Mask,
int nBit
);
Parametri
Maschera
[in] Valore intero a 64 bit da spostare a destra.
nBit
[in] Numero di bit da spostare, modulo 64 su x64 e modulo 32 su x86.
Valore restituito
Maschera spostata in nBit
base ai bit.
Requisiti
Intrinsic | Architettura |
---|---|
__ll_rshift |
x86, x64 |
<File di intestazione intrin.h>
Osservazioni:
Se il secondo parametro è maggiore di 64 su x64 (32 su x86), tale numero viene preso modulo 64 (32 su x86) per determinare il numero di bit da spostare. Il ll
prefisso indica che si tratta di un'operazione su long long
, un altro nome per __int64
, il tipo integrale con segno a 64 bit.
Esempio
// 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;
}
Output
ffffffffffffff00
- 100
fffffffffffffff0
- 10
Nota
Se _ull_rshift
è stato usato, l'MSB del valore spostato a destra sarebbe stato zero, quindi il risultato desiderato non sarebbe stato ottenuto nel caso di un valore negativo.
Fine sezione specifica Microsoft