Freigeben über


__popcnt16, __popcnt, __popcnt64

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

Siehe auch

Referenz

Intrinsische Compilerfunktionen