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
Ermittelt die Anzahl von Bits der Leerraum (eins) in einer 16 -, 32 - oder 64: Byte-ganzen Zahl ohne Vorzeichen.
unsigned short __popcnt16(
unsigned short value
);
unsigned int __popcnt(
unsigned int value
);
unsigned __int64 __popcnt64(
unsigned __int64 value
);
Parameter
- [in] value
Das 16 -, 32 - oder zum 64-Bit-Ganzzahl ohne Vorzeichen wir die Anzahl der Leerraum.
Rückgabewert
Die Anzahl der Bits im value-Parameter.
Anforderungen
Intrinsisch |
Architektur |
---|---|
__popcnt16 |
Erweiterte Bitmanipulation |
__popcnt |
Erweiterte Bitmanipulation |
__popcnt64 |
Erweiterte Bitmanipulation im 64-Bit-Modus. |
Headerdatei <intrin.h>
Hinweise
Jede dieser systeminternen Funktionen generiert die popcnt-Anweisung. Die Größe des Werts, den die popcnt-Anweisung zurückgibt, entspricht der Größe des Arguments. In 32-Bit- Modus gibt es keine 64-Bit- allgemeinen Register, sodass kein 64-Bit- popcnt.
Um Hardwareunterstützung für die popcnt-Anweisung zu ermitteln, rufen Sie die __cpuid systeminterne Funktion mit InfoType=0x00000001 und Prüfbit 23 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 popcnt-Anweisung unterstützt, die Ergebnisse sind unvorhersehbar.
Beispiel
#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 = __popcnt16(us[i]);
cout << "__popcnt16(0x" << hex << us[i] << ") = " << dec << usr << endl;
}
for (int i=0; i<4; i++) {
uir = __popcnt(ui[i]);
cout << "__popcnt(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