_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).
Sintaxis
unsigned char _BitScanForward(
unsigned long * Index,
unsigned long Mask
);
unsigned char _BitScanForward64(
unsigned long * Index,
unsigned __int64 Mask
);
Parámetros
Índice
[out] Cargado con la posición de bit del primer bit establecido (1) que se encontró.
Mask
[in] 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 bits del primer bit establecido se escribe en la dirección especificada en el primer parámetro y la función devuelve 1. Si no se encuentra ningún bit, la función devuelve 0 y el valor escrito en la dirección del primer parámetro no está definido.
Requisitos
Intrinsic | Arquitectura |
---|---|
_BitScanForward |
x86, ARM, x64, ARM64 |
_BitScanForward64 |
ARM64, 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;
}
}
12
Enter a positive integer as the mask:
Mask: 12 Index: 2
FIN de Específicos de Microsoft