Namespaces
Variants

std:: popcount

From cppreference.net
Utilities library
Definido en el encabezado <bit>
template < class T >
constexpr int popcount ( T x ) noexcept ;
(desde C++20)

Devuelve el número de 1 bits en el valor de x .

Esta sobrecarga participa en la resolución de sobrecarga solo si T es un tipo entero sin signo (es decir, unsigned char , unsigned short , unsigned int , unsigned long , unsigned long long , o un tipo entero sin signo extendido).

Contenidos

Parámetros

x - valor de tipo entero sin signo

Valor de retorno

El número de 1 bits en el valor de x .

Notas

El nombre popcount es una contracción de "population count".

Macro de prueba de características Valor Std Característica
__cpp_lib_bitops 201907L (C++20) Operaciones de bits

Ejemplo

#include <bit>
#include <bitset>
#include <cstdint>
#include <iostream>
static_assert(std::popcount(0xFULL) == 4);
int main()
{
    for (const std::uint8_t x : {0, 0b00011101, 0b11111111})
        std::cout << "popcount( " << std::bitset<8>(x) << " ) = "
                  << std::popcount(x) << '\n';
}

Salida:

popcount( 00000000 ) = 0
popcount( 00011101 ) = 4
popcount( 11111111 ) = 8

Véase también

cuenta el número de bits 0 consecutivos, comenzando desde el bit más significativo
(plantilla de función)
(C++20)
cuenta el número de bits 1 consecutivos, comenzando desde el bit más significativo
(plantilla de función)
cuenta el número de bits 0 consecutivos, comenzando desde el bit menos significativo
(plantilla de función)
(C++20)
cuenta el número de bits 1 consecutivos, comenzando desde el bit menos significativo
(plantilla de función)
verifica si un número es una potencia entera de 2
(plantilla de función)
retorna el número de bits establecidos en true
(función miembro pública de std::bitset<N> )
verifica si todos, alguno o ninguno de los bits están establecidos en true
(función miembro pública de std::bitset<N> )