Sdílet prostřednictvím


__popcnt16, __popcnt, __popcnt64

Specifické pro Microsoft

Spočítá počet 1 bitů (počet obyvatel) v 16bitovém, 32bitovém nebo 64bitovém celočíselném počtu bez znaménka.

Syntaxe

unsigned short __popcnt16(
   unsigned short value
);
unsigned int __popcnt(
   unsigned int value
);
unsigned __int64 __popcnt64(
   unsigned __int64 value
);

Parametry

value
[v] 16bitové, 32bitové nebo 64bitové celé číslo bez znaménka, pro které chceme počet obyvatel.

Vrácená hodnota

Počet 1 bitů v parametru hodnoty .

Požadavky

Vnitřní Architektura
__popcnt16 Pokročilá manipulace s bity
__popcnt Pokročilá manipulace s bity
__popcnt64 Pokročilá manipulace s bity v 64bitovém režimu

Hlavičkový soubor<intrin.h>

Poznámky

Každý z vnitřních objektů generuje popcnt instrukce. V 32bitovém režimu nejsou žádné 64bitové registry pro obecné účely, takže 64bitová verze popcnt není podporovaná.

Chcete-li určit podporu hardwaru popcnt pro instrukce, zavolejte __cpuid vnitřní s InfoType=0x00000001 bitem 23 z CPUInfo[2] (ECX). Tento bit je 1, pokud je instrukce podporovaná, a 0 jinak. Pokud spustíte kód, který tyto vnitřní objekty používá na hardwaru, který instrukce nepodporuje popcnt , budou výsledky nepředvídatelné.

Příklad

#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;
  }
}
__popcnt16(0x0) = 0
__popcnt16(0xff) = 8
__popcnt16(0xffff) = 16
__popcnt(0x0) = 0
__popcnt(0xff) = 8
__popcnt(0xffff) = 16
__popcnt(0xffffffff) = 32

END Microsoft Specific

Parts Copyright 2007 by Advanced Micro Devices, Inc. Všechna práva vyhrazena. Reprodukováno s oprávněním společnosti Advanced Micro Devices, Inc.

Viz také

Vnitřní funkce kompilátoru