Compartir a través de


_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

Consulte también

Intrínsecos del compilador