_BitScanForward, _BitScanForward64
Khusus Microsoft
Cari data mask dari bit paling tidak signifikan (LSB) ke bit paling signifikan (MSB) untuk bit yang ditetapkan (1).
Sintaks
unsigned char _BitScanForward(
unsigned long * Index,
unsigned long Mask
);
unsigned char _BitScanForward64(
unsigned long * Index,
unsigned __int64 Mask
);
Parameter
Index
[out] Dimuat dengan posisi bit dari bit set pertama (1) ditemukan.
Masker
[di] Nilai 32-bit atau 64-bit untuk dicari.
Nilai hasil
0 jika masker adalah nol; bukan nol jika tidak.
Keterangan
Jika bit yang ditetapkan ditemukan, posisi bit dari bit set pertama ditulis ke alamat yang ditentukan dalam parameter pertama dan fungsi mengembalikan 1. Jika tidak ada bit yang ditemukan, fungsi mengembalikan 0 dan nilai yang ditulis ke alamat dalam parameter pertama tidak ditentukan.
Persyaratan
Intrinsik | Sistem |
---|---|
_BitScanForward |
x86, ARM, x64, ARM64 |
_BitScanForward64 |
ARM64, x64 |
File header<intrin.h>
Contoh
// 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
END Khusus Microsoft