_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