__lzcnt16, __lzcnt, __lzcnt64
Específicos do Microsoft
Conta o número de líderes zeros em 16-, 32 ou 64 bytes inteiro.
unsigned short __lzcnt16(
unsigned short value
);
unsigned int __lzcnt(
unsigned int value
);
unsigned __int64 __lzcnt64(
unsigned __int64 value
);
Parâmetros
- [in]value
16-, 32 Ou 64 bits inteiro não assinado para fazer a varredura de zeros à esquerda.
Valor de retorno
O número de líderes de zero bits de value parâmetro. Se value é zero, o valor de retorno é o tamanho do operando de entrada (16, 32 ou 64). Se mais pouco significativo de value é um valor de retorno é zero.
Requisitos
Intrínseca |
Arquitetura |
---|---|
__lzcnt16 |
Avançados de manipulação de bits |
__lzcnt |
Avançados de manipulação de bits |
__lzcnt64 |
Avançados de manipulação de bits no modo de 64 bits. |
Arquivo de cabeçalho <intrin.h>
Comentários
Cada um desses intrínsecos gera o lzcnt instrução. O tamanho do valor que o lzcnt instrução retorna é o mesmo tamanho do argumento. No modo de 32 bits não há nenhuma 64 bits geral registra, portanto, não de 64 bits lzcnt.
Para determinar o suporte de hardware para o lzcnt chamada de instrução do __cpuid intrínseca com InfoType=0x80000001 e verificar o bit 5 da CPUInfo[2] (ECX). Esse bit será 1 se a instrução for aceito e 0 caso contrário. Se você executa código que usa intrínseca neste hardware não oferece suporte a lzcnt as instruções, os resultados são imprevisíveis.
Exemplo
// Compile this test with: /EHsc
#include <iostream>
#include <intrin.h>
using namespace std;
int main()
{
unsigned short us[3] = {0, 0xFF, 0xFFFF};
unsigned short usr;
unsigned int ui[4] = {0, 0xFF, 0xFFFF, 0xFFFFFFFF};
unsigned int uir;
for (int i=0; i<3; i++) {
usr = __lzcnt16(us[i]);
cout << "__lzcnt16(0x" << hex << us[i] << ") = " << dec << usr << endl;
}
for (int i=0; i<4; i++) {
uir = __lzcnt(ui[i]);
cout << "__lzcnt(0x" << hex << ui[i] << ") = " << dec << uir << endl;
}
}
END Microsoft específicos
Copyright 2007 pela Advanced Micro dispositivos, Inc. todos os direitos reservados. Reproduzido com permissão do Advanced Micro dispositivos, Inc.