__popcnt16, __popcnt, __popcnt64
Specifici di Microsoft
Calcola il numero uno dei bit (censimento popolazione) in Unsigned Integer compreso tra 16 e 32, ovvero, o 64 byte.
unsigned short __popcnt16(
unsigned short value
);
unsigned int __popcnt(
unsigned int value
);
unsigned __int64 __popcnt64(
unsigned __int64 value
);
Parametri
- [in] value
Il 16 -, il 32 -, o l'Unsigned Integer a 64 bit per il quale è il censimento della compilazione.
Valore restituito
Il numero di bit uno nel parametro di value .
Requisiti
Intrinseco |
Architettura |
---|---|
__popcnt16 |
La modifica dei bit avanzata |
__popcnt |
La modifica dei bit avanzata |
__popcnt64 |
La modifica dei bit avanzate in modalità a 64 bit. |
File di intestazione <intrin.h>
Note
Ognuna di queste funzioni intrinseche genera l'istruzione dipopcnt . La dimensione del valore che l'istruzione dipopcnt restituisce è la stessa dimensione del relativo argomento. In modalità a 32 bit non esiste registri di utilizzo generale a 64 bit, nessun 64 bit popcnt.
Per determinare il supporto hardware all'istruzione di popcnt, chiamare la funzione intrinseca di __cpuid con InfoType=0x00000001 e il bit di controllo, 23 di CPUInfo[2] (ECX). Questo bit è altrimenti 1 se l'istruzione è supportata e 0. Se si esegue il codice che utilizza questa funzione intrinseca sull'hardware che non supporta l'istruzione di popcnt , i risultati sono imprevedibili.
Esempio
#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 FINALE specifico
Copyright 2007 da Advanced Micro Devices, inc tutti i diritti riservati. Riprodotto con l'autorizzazione di Advanced Micro Devices, inc