Partilhar via


__popcnt16, __popcnt, __popcnt64

Específicos do Microsoft

Conta o número de um bits (contagem de população) em 16-, 32 ou 64 bytes inteiro não assinado.

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

Parâmetros

  • [in]value
    16-, 32 Ou 64 bits inteiro não assinado para o qual queremos a contagem de população.

Valor de retorno

O número de bits de um a value parâmetro.

Requisitos

Intrínseca

Arquitetura

__popcnt16

Avançados de manipulação de bits

__popcnt

Avançados de manipulação de bits

__popcnt64

Avançados de manipulação de bits no modo de 64 bits.

Arquivo de cabeçalho <intrin.h>

Comentários

Cada um desses intrínsecos gera o popcnt instrução. O tamanho do valor que o popcnt instrução retorna é o mesmo tamanho do argumento. No modo de 32 bits não há nenhuma 64 bits geral registra, portanto, não de 64 bits popcnt.

Para determinar o suporte de hardware para o popcnt instrução, chamada de __cpuid intrínseca com InfoType=0x00000001 e verificar o bit 23 de CPUInfo[2] (ECX). Este bit é 1 se houver suporte para a instrução e 0 caso contrário. Se você executa código que usa intrínseca neste hardware não oferece suporte a popcnt as instruções, os resultados são imprevisíveis.

Exemplo

#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;
  }
}
  

END Microsoft específicos

Copyright 2007 pela Advanced Micro dispositivos, Inc. todos os direitos reservados. Reproduzido com permissão do Advanced Micro dispositivos, Inc.

Consulte também

Referência

Intrínsecos do compilador