__popcnt16, __popcnt, __popcnt64

Specyficzne dla firmy Microsoft

Zlicza 1 liczbę bitów (liczba populacji) w 16-, 32-lub 64-bitowej liczbie całkowitej bez znaku.

Składnia

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

Parametry

wartość
[in] 16-, 32-bitowa lub 64-bitowa liczba całkowita, dla której chcemy liczyć populację.

Wartość zwracana

Liczba bitów 1 w parametrze wartości .

Wymagania

Wewnętrzne Architektura
__popcnt16 Zaawansowane manipulowanie bitami
__popcnt Zaawansowane manipulowanie bitami
__popcnt64 Zaawansowane manipulowanie bitami w trybie 64-bitowym.

Plik<nagłówka intrin.h>

Uwagi

Każda z funkcji wewnętrznych generuje instrukcję popcnt . W trybie 32-bitowym nie ma rejestrów ogólnego przeznaczenia 64-bitowych, więc 64-bitowe popcnt nie jest obsługiwane.

Aby określić obsługę sprzętu popcnt instrukcji, wywołaj __cpuid funkcję wewnętrzną za pomocą InfoType=0x00000001 polecenia i sprawdź bit 23 z CPUInfo[2] (ECX). Ten bit to 1, jeśli instrukcja jest obsługiwana, a w przeciwnym razie 0. Jeśli uruchamiasz kod korzystający z tych funkcji wewnętrznych na sprzęcie, który nie obsługuje popcnt instrukcji, wyniki są nieprzewidywalne.

Przykład

#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

Części Copyright 2007 firmy Advanced Micro Devices, Inc. Wszelkie prawa zastrzeżone. Odtworzony z uprawnieniami firmy Advanced Micro Devices, Inc.

Zobacz też

Funkcje wewnętrzne kompilatora