Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Microsoft Specific
Search the mask data from most significant bit (MSB) to least significant bit (LSB) for a set bit (1).
Syntax
unsigned char _BitScanReverse(
unsigned long * Index,
unsigned long Mask
);
unsigned char _BitScanReverse64(
unsigned long * Index,
unsigned __int64 Mask
);
Parameters
Index
[out] Loaded with the bit position of the first set bit (1) found. Otherwise, undefined.
Mask
[in] The 32-bit or 64-bit value to search.
Return value
Nonzero if any bit was set in Mask
, or 0 if no set bits were found.
Requirements
Intrinsic | Architecture | Header |
---|---|---|
_BitScanReverse |
x86, ARM, x64, ARM64 | <intrin.h> |
_BitScanReverse64 |
ARM64, x64 | <intrin.h> |
Example
// BitScanReverse.cpp
// compile with: /EHsc
#include <iostream>
#include <intrin.h>
using namespace std;
#pragma intrinsic(_BitScanReverse)
int main()
{
unsigned long mask = 0x1000;
unsigned long index;
unsigned char isNonzero;
cout << "Enter a positive integer as the mask: " << flush;
cin >> mask;
isNonzero = _BitScanReverse(&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: 3
END Microsoft Specific