_BitScanForward, _BitScanForward64
Sezione specifica Microsoft
Cercare un bit impostato (1) nei dati di maschera dal bit meno significativo (LSB) al bit più significativo (MSB).
unsigned char _BitScanForward( unsigned long * Index, unsigned long Mask ); unsigned char _BitScanForward64( unsigned long * Index, unsigned __int64 Mask );
Parametri
[out] Index
Caricato con la posizione di bit del primo bit impostato (1) trovato.[in] Mask
Il valore a 32 bit o a 64 bit da cercare.
Valore restituito
0 se la maschera è zero; diverso da zero in caso contrario.
Note
Se viene trovato un bit impostato, viene restituita la posizione di bit del primo bit impostato trovato nel primo parametro. Se non viene trovato alcun bit impostato, viene restituito 0; in caso contrario, viene restituito 1.
Requisiti
Funzione intrinseca |
Architettura |
---|---|
_BitScanForward |
x86, ARM, x64 |
_BitScanForward64 |
ARM, x64 |
File di intestazione <intrin.h>
Esempio
// 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;
}
}
Input
12
Esempio di output
Enter a positive integer as the mask:
Mask: 12 Index: 2