__ll_rshift
Específicos de Microsoft
Desplaza un valor de 64 bits especificado por el primer parámetro a la derecha un número de bits especificados por el segundo parámetro.
Sintaxis
__int64 __ll_rshift(
__int64 Mask,
int nBit
);
Parámetros
Mask
[in] Valor entero de 64 bits que se va a desplazar a la derecha.
nBit
[in] Número de bits que se van a desplazar, módulo 64 en x64 y módulo 32 en x86.
Valor devuelto
Máscara desplazada nBit
bits.
Requisitos
Intrinsic | Arquitectura |
---|---|
__ll_rshift |
x86, x64 |
Archivo de encabezado<intrin.h>
Comentarios
Si el segundo parámetro es mayor que 64 en x64 (32 en x86), ese número se toma como módulo 64 (32 en x86) para determinar el número de bits que se van a desplazar. El prefijo ll
indica que es una operación en long long
, otro nombre para __int64
, el tipo entero con signo de 64 bits.
Ejemplo
// 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:
Si se ha usado _ull_rshift
, el MSB del valor desplazado a la derecha habría sido cero, por lo que el resultado deseado no se habría obtenido en el caso de un valor negativo.
FIN de Específicos de Microsoft