__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