Compartilhar via


__ll_rshift

Seção específica da 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.

Sintaxe

__int64 __ll_rshift(
   __int64 Mask,
   int nBit
);

Parâmetros

Máscara
[in] O valor inteiro de 64 bits a ser deslocado para a direita.

nBit
[in] O número de bits a serem deslocados, módulo 64 em x64 e módulo 32 em x86.

Valor retornado

A máscara deslocada por bits nBit.

Requisitos

Intrinsic Arquitetura
__ll_rshift x86, x64

Arquivo de cabeçalho<intrin.h>

Comentários

Se o segundo parâmetro for maior que 64 em x64 (32 em x86), esse número será usado como módulo 64 (32 em x86) para determinar o número de bits a serem deslocados. O prefixo ll indica que ele é uma operação em long long, outro nome para __int64, o tipo integral com sinal 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

Observação

Se _ull_rshift tiver sido usado, o MSB do valor deslocado para a direita teria sido zero, portanto, o resultado desejado não teria sido obtido no caso de um valor negativo.

Fim da seção específica da Microsoft

Confira também

Intrínsecos do compilador
__ll_lshift
__ull_rshift