__lzcnt16, __lzcnt, __lzcnt64
Específicos de Microsoft
Cuenta el número de ceros iniciales en un entero de 16 -, 32 -, o 64 bytes.
unsigned short __lzcnt16(
unsigned short value
);
unsigned int __lzcnt(
unsigned int value
);
unsigned __int64 __lzcnt64(
unsigned __int64 value
);
Parámetros
- [in] value
Los 16 -, 32 -, o 64 bits enteros sin signo a examinar para los ceros iniciales.
Valor devuelto
El número de bits de cero a la izquierda en el parámetro de value . Si value es cero, el valor devuelto es el tamaño del operando de entrada (16, 32, 64). Si el bit más significativo de value es uno, el valor devuelto es cero.
Requisitos
Intrínseco |
Arquitectura |
---|---|
__lzcnt16 |
Manipulación de bits avanzadas |
__lzcnt |
Manipulación de bits avanzadas |
__lzcnt64 |
Manipulación de bits avanzada en modo de 64 bits. |
Archivo de encabezado <intrin.h>
Comentarios
Cada uno de estos intrínseco genera la instrucción de lzcnt . El tamaño del valor que la instrucción delzcnt devuelve es igual que el tamaño de su argumento. En modo de 32 bits hay registros de propósito general no 64 bits, por consiguiente ningún lzcnt64 bits.
Para determinar la compatibilidad de hardware para la instrucción delzcnt llame a intrínsecos de __cpuid con InfoType=0x80000001 y compruebe el bit 5 de CPUInfo[2] (ECX). Este bit será 1 si se admite la instrucción, y 0 de otra manera. Si ejecuta el código que utiliza este intrínseco en el hardware que no admite la instrucción delzcnt , los resultados son imprevisibles.
Ejemplo
// 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;
}
}
Específico de Microsoft de FINAL
Copyright 2007 por Advanced Micro Devices, Inc reservados todos los derechos. Optimizado con permiso de Advanced Micro Devices, Inc