Partilhar via


__ll_rshift

Específicos do Microsoft

Desloca um valor de 64 bits especificado pelo primeiro parâmetro para a direita por um número de bits especificado pelo segundo parâmetro.

__int64 __ll_rshift(
   __int64 Mask,
   int nBit
);

Parâmetros

  • [in]Mask
    O valor inteiro de 64 bits para deslocar para a direita.

  • [in]nBit
    O número de bits de turno, módulo 64 em x64 e módulo 32 no x86.

Valor de retorno

A máscara deslocados em nBit bits.

Requisitos

Intrínseca

Arquitetura

__ll_rshift

x86,x64

Arquivo de cabeçalho <intrin.h>

Comentários

Se o segundo parâmetro é maior que 64 em x64 (32 no x86), esse número é obtido de módulo 64 (32 no x86) para determinar o número de bits shift. O ll prefixo indica que esta é uma operação em long long, outro nome para __int64, o tipo integral assinado de 64 bits.

Exemplo

// 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;
}

Saída

ffffffffffffff00
 - 100
fffffffffffffff0
 - 10

Nota se _ull_rshift tem sido usado, o MSB do valor deslocadas direita teria sido zero, para que o resultado desejado não poderia ter sido obtido no caso de um valor negativo.

Consulte também

Referência

Intrínsecos do compilador

__ll_lshift

__ull_rshift