Compartir a través de


__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 Architecture
__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;
}

Salida

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

Consulte también

Intrínsecos del compilador
__ll_lshift
__ull_rshift