Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.
We recommend using Visual Studio 2017

_BitScanReverse, _BitScanReverse64

 

The latest version of this topic can be found at _BitScanReverse, _BitScanReverse64.

Microsoft Specific**

Search the mask data from most significant bit (MSB) to least significant bit (LSB) for a set bit (1).

unsigned char _BitScanReverse(  
   unsigned long * Index,  
   unsigned long Mask  
);  
unsigned char _BitScanReverse64(  
   unsigned long * Index,  
   unsigned __int64 Mask  
);  

Parameters

[out] Index
Loaded with the bit position of the first set bit (1) found.

[in] Mask
The 32-bit or 64-bit value to search.

Nonzero if Index was set, or 0 if no set bits were found.

IntrinsicArchitectureHeader
_BitScanReversex86, ARM, x64<intrin.h>
_BitScanReverse64ARM, x64
// 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

Compiler Intrinsics

Show: