_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

Vea también

Referencia

Intrínsecos del controlador