From cppreference.com
std::size_tcount()const;(noexcept since C++11)
(constexpr since C++23)Returns the number of bits that are set to true.
Return value
Number of bits that are set to true.
Example
Run this code
#include<bitset>#include<iostream>constexprautopopcount(unsignedx)noexcept{unsignednum{};for(;x;++num,x&=(x-1));returnnum;}static_assert(popcount(0b101010)==std::bitset<8>{0b101010}.count());intmain(){std::bitset<8>b("00010010");std::cout<<"Initial value: "<<b<<'\n';// Find the first unset bitstd::size_tidx=0;while(idx<b.size()&&b.test(idx))++idx;// Continue setting bits until half the bitset is filledwhile(idx<b.size()&&b.count()<b.size()/2){b.set(idx);std::cout<<"Setting bit "<<idx<<": "<<b<<'\n';while(idx<b.size()&&b.test(idx))++idx;}}Output:
Initial value: 00010010 Setting bit 0: 00010011 Setting bit 2: 00010111 See also
returns the number of bits that the bitset holds
(public member function)
(C++20)
counts the number of 1 bits in an unsigned integer
(function template)