_BitScanForward, _BitScanForward64
Específicos de Microsoft
Buscar los datos de máscara de bit menos significativo (LSB) a bit más significativo (LSB) para un bit establecido (1).
unsigned char _BitScanForward( unsigned long * Index, unsigned long Mask ); unsigned char _BitScanForward64( unsigned long * Index, unsigned __int64 Mask );
Parámetros
[out] Index
Cargado con la posición de bit del primer bit establecido (1) que se encontró.[in] Mask
El valor de 32 bits o 64 bits que se va a buscar.
Valor devuelto
0 si la máscara es cero; distinto de cero en caso contrario.
Comentarios
Si se encuentra un bit establecido, la posición de bit del primer bit establecido que se encontró se devuelve al primer parámetro. Si no se encuentra ningún bit establecido, se devuelve 0; de lo contrario, se devuelve 1.
Requisitos
Función intrínseca |
Arquitectura |
---|---|
_BitScanForward |
x86, ARM, x64 |
_BitScanForward64 |
ARM, x64 |
Archivo de encabezado <intrin.h>
Ejemplo
// BitScanForward.cpp
// compile with: /EHsc
#include <iostream>
#include <intrin.h>
using namespace std;
#pragma intrinsic(_BitScanForward)
int main()
{
unsigned long mask = 0x1000;
unsigned long index;
unsigned char isNonzero;
cout << "Enter a positive integer as the mask: " << flush;
cin >> mask;
isNonzero = _BitScanForward(&index, mask);
if (isNonzero)
{
cout << "Mask: " << mask << " Index: " << index << endl;
}
else
{
cout << "No set bits found. Mask is zero." << endl;
}
}
Entrada
12
Resultados del ejemplo
Enter a positive integer as the mask:
Mask: 12 Index: 2