__ll_rshift

Específicos de Microsoft

Desplaza un valor 64 bits especificado por el primer parámetro a la derecha por varios bits especificado por el segundo parámetro.

__int64 __ll_rshift(
   __int64 Mask,
   int nBit
);

Parámetros

  • [in] Mask
    El valor entero de 64 bits para desplazar la derecha.

  • [in] nBit
    El número de bits para desplazarse, el módulo 64 en x64, el módulo y 32 en x86.

Valor devuelto

La máscara se desplaza por los bits de nBit .

Requisitos

Intrínseco

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 es el módulo tomado 64 (32 en x86) para determinar el número de bits para desplazarse. El prefijo de ll indica que es una operación en long long, otro nombre para __int64, el tipo con signo de 64 bits de entero.

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 utilizado _ull_rshift , el MSB de valor derecho-desplazado habría cero, por lo que el resultado deseado no se obtendrían en el caso de un valor negativo.

Vea también

Referencia

Intrínsecos del controlador

__ll_lshift

__ull_rshift