__lzcnt16, __lzcnt, __lzcnt64
Microsoft-spezifisch
Ermittelt die Anzahl von führenden Nullen in eine Drehung um 16 Grad, 32 oder 64 Byte-ganze Zahl.
unsigned short __lzcnt16(
unsigned short value
);
unsigned int __lzcnt(
unsigned int value
);
unsigned __int64 __lzcnt64(
unsigned __int64 value
);
Parameter
- [in] value
Das 16 -, 32 - oder für führende Nullen zu überprüfende 64-Bit-Ganzzahl ohne Vorzeichen.
Rückgabewert
Die Anzahl der Bits der führenden Null in value-Parameter. Wenn value (null) ist, ist der Rückgabewert die Größe des Eingabe- operanden (16, 32 oder 64). Wenn das höchstwertige Byte eines value eins ist, ist der Rückgabewert (null).
Anforderungen
Intrinsisch |
Architektur |
---|---|
__lzcnt16 |
Erweiterte Bitmanipulation |
__lzcnt |
Erweiterte Bitmanipulation |
__lzcnt64 |
Erweiterte Bitmanipulation im 64-Bit-Modus. |
Headerdatei <intrin.h>
Hinweise
Jede dieser systeminternen Funktionen generiert die lzcnt-Anweisung. Die Größe des Werts, den die lzcnt-Anweisung zurückgibt, entspricht der Größe des Arguments. In 32-Bit- Modus gibt es keine 64-Bit- allgemeinen Register, sodass kein 64-Bit- lzcnt.
Um Hardwareunterstützung für die lzcnt-Anweisung zu ermitteln, rufen Sie die __cpuid systeminterne Funktion mit InfoType=0x80000001 und Prüfbit 5 von CPUInfo[2] (ECX) an. Das Bit beträgt 1, wenn die Anweisung unterstützt wird; andernfalls 0. Wenn Sie Code ausführen, der diese systeminterne Funktion auf Hardware verwendet, die nicht die lzcnt-Anweisung unterstützt, die Ergebnisse sind unvorhersehbar.
Beispiel
// Compile this test with: /EHsc
#include <iostream>
#include <intrin.h>
using namespace std;
int main()
{
unsigned short us[3] = {0, 0xFF, 0xFFFF};
unsigned short usr;
unsigned int ui[4] = {0, 0xFF, 0xFFFF, 0xFFFFFFFF};
unsigned int uir;
for (int i=0; i<3; i++) {
usr = __lzcnt16(us[i]);
cout << "__lzcnt16(0x" << hex << us[i] << ") = " << dec << usr << endl;
}
for (int i=0; i<4; i++) {
uir = __lzcnt(ui[i]);
cout << "__lzcnt(0x" << hex << ui[i] << ") = " << dec << uir << endl;
}
}
Microsoft ENDES bestimmten
Copyright 2007 bis Advanced Micro Devices, Inc alle Rechte vorbehalten. Reproduziert mit zulässigen Advanced Micro Devices, Inc