Partager via


_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).

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

Paramètres

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

  • [in] Mask
    Valeur 32 bits ou 64 bits à rechercher.

Valeur de retour

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

Notes

Si un bit défini est détecté, la position de bit du premier bit défini détecté est retournée dans le premier paramètre. Si aucun bit défini n'est détecté, 0 est retourné ; dans le cas contraire, 1 est retourné.

Configuration requise

Intrinsèque

Architecture

_BitScanForward

x86, ARM, x64

_BitScanForward64

ARM, 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;
   }
}

Entrée

12

Résultat de l'exemple

Enter a positive integer as the mask: 
Mask: 12 Index: 2

Voir aussi

Référence

intrinsèques du compilateur