__ll_lshift
Específicos do Microsoft
Desloca o valor de 64 bits fornecido para a esquerda pelo número especificado de bits.
unsigned __int64 __ll_lshift(
unsigned __int64 Mask,
int nBit
);
Parâmetros
[in]Mask
O valor inteiro de 64 bits para deslocar para a esquerda.[in]nBit
O número de bits shift.
Valor de retorno
A máscara deslocados à esquerda por nBit bits.
Requisitos
Intrínseca |
Arquitetura |
---|---|
__ll_lshift |
x86,x64 |
Arquivo de cabeçalho <intrin.h>
Comentários
Se você compilar seu programa usando a arquitetura de 64 bits e nBit é maior do que 63, é o número de bits shift nBit módulo 64. Se você compilar seu programa usando a arquitetura de 32 bits e nBit maior que 31, é o número de bits shift nBit módulo 32.
O ll o nome indica que esta é uma operação em long long (__int64).
Exemplo
// ll_lshift.cpp
// compile with: /EHsc
// processor: x86, x64
#include <iostream>
#include <intrin.h>
using namespace std;
#pragma intrinsic(__ll_lshift)
int main()
{
unsigned __int64 Mask = 0x100;
int nBit = 8;
Mask = __ll_lshift(Mask, nBit);
cout << hex << Mask << endl;
}
Saída
10000
Nota há nenhuma versão unsigned da operação de deslocamento à esquerda. Isso ocorre porque __ll_lshift já usa um parâmetro de entrada não assinado. Ao contrário de deslocamento à direita, não há nenhuma dependência do sinal para deslocamento à esquerda, porque o bit menos significativo no resultado é sempre definido como zero independentemente do sinal do valor deslocado.