_BitScanForward, _BitScanForward64

Section spécifique à Microsoft

Rechercher les données de masque du bit le moins significatif (LSB) au bit le plus significatif (MSB) pour un bit défini (1).

Syntaxe

unsigned char _BitScanForward(
   unsigned long * Index,
   unsigned long Mask
);
unsigned char _BitScanForward64(
   unsigned long * Index,
   unsigned __int64 Mask
);

Paramètres

Index
[out] Chargé avec la position de bit du premier bit défini (1) trouvé.

Masque
[in] Valeur 32 bits ou 64 bits à rechercher.

Valeur retournée

0 si le masque est zéro ; différent de zéro dans le cas contraire.

Notes

Si un bit défini est trouvé, la position du bit du premier jeu est écrite dans l’adresse spécifiée dans le premier paramètre et la fonction retourne 1. Si aucun bit n’est trouvé, la fonction retourne 0 et la valeur écrite dans l’adresse du premier paramètre n’est pas définie.

Spécifications

Intrinsic Architecture
_BitScanForward x86, ARM, x64, ARM64
_BitScanForward64 ARM64, x64

Fichier<d’en-tête intrin.h>

Exemple

// 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 la section spécifique à Microsoft

Voir aussi

Intrinsèques du compilateur