Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Microsoft-spezifisch
Suchen Sie die Maskendaten vom niedrigstwertigen Bit (LSB) bis zum höchstwertigen Bit (MSB) für ein festgelegtes Bit (1).
Syntax
unsigned char _BitScanForward(
unsigned long * Index,
unsigned long Mask
);
unsigned char _BitScanForward64(
unsigned long * Index,
unsigned __int64 Mask
);
Parameter
Index
[out] Geladen mit der Bitposition des ersten festgelegten Bits (1).
Maske
[in] Der zu durchsuchende 32-Bit- oder 64-Bit-Wert.
Rückgabewert
0, wenn die Maske null ist; andernfalls ungleich null.
Hinweise
Wenn ein festgelegtes Bit gefunden wird, wird die Bitposition des ersten Satzbits in die adresse geschrieben, die im ersten Parameter angegeben ist, und die Funktion gibt 1 zurück. Wenn kein Bit gefunden wird, gibt die Funktion "0" zurück, und der Wert, der in die Adresse im ersten Parameter geschrieben wurde, ist nicht definiert.
Anforderungen
| Intrinsic | Aufbau |
|---|---|
_BitScanForward |
x86, ARM, x64, ARM64 |
_BitScanForward64 |
ARM64, x64 |
Headerdatei<intrin.h>
Beispiel
// 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
Ende Microsoft-spezifisch