__popcnt16, __popcnt, __popcnt64
Seção específica da Microsoft
Conta o número de bits 1
(contagem populacional) em um inteiro sem sinal de 16, 32 ou 64 bits.
Sintaxe
unsigned short __popcnt16(
unsigned short value
);
unsigned int __popcnt(
unsigned int value
);
unsigned __int64 __popcnt64(
unsigned __int64 value
);
Parâmetros
value
[in] O inteiro sem sinal de 16, 32 ou 64 bits para o qual queremos a contagem populacional.
Retornar valor
O número de bits 1
no parâmetro value.
Requisitos
Intrinsic | Arquitetura |
---|---|
__popcnt16 |
Manipulação avançada de bits |
__popcnt |
Manipulação avançada de bits |
__popcnt64 |
Manipulação avançada de bits no modo de 64 bits. |
Arquivo de cabeçalho<intrin.h>
Comentários
Cada um dos intrínsecos gera a instrução popcnt
. No modo de 32 bits, não há registros de uso geral de 64 bits, portanto, não há suporte para 64 bits popcnt
.
Para determinar o suporte de hardware para a instrução popcnt
, chame o intrínseco __cpuid
com InfoType=0x00000001
e verifique o bit 23 de CPUInfo[2] (ECX)
. Esse bit será 1 se a instrução for compatível e, caso contrário, 0. Se você executar código que usa esse intrínsecos em hardware que não dá suporte à instrução popcnt
, os resultados serã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;
}
}
__popcnt16(0x0) = 0
__popcnt16(0xff) = 8
__popcnt16(0xffff) = 16
__popcnt(0x0) = 0
__popcnt(0xff) = 8
__popcnt(0xffff) = 16
__popcnt(0xffffffff) = 32
Fim da seção específica da Microsoft
Partes com Copyright 2007 da Advanced Micro Devices, Inc. Todos os direitos reservados. Reproduzido com permissão da Advanced Micro Devices, Inc.
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de