26 Numerics library [numerics]

26.5 Bit manipulation [bit]

26.5.6 Counting [bit.count]

In the following descriptions, let N denote numeric_ยญlimits<T>โ€‹::โ€‹digits.
template<class T> constexpr int countl_zero(T x) noexcept;
Constraints: T is an unsigned integer type ([basic.fundamental]).
Returns: The number of consecutive 0 bits in the value of x, starting from the most significant bit.
Note
:
Returns N if x == 0.
โ€” end note
 ]
template<class T> constexpr int countl_one(T x) noexcept;
Constraints: T is an unsigned integer type ([basic.fundamental]).
Returns: The number of consecutive 1 bits in the value of x, starting from the most significant bit.
Note
:
Returns N if x == numeric_ยญlimits<T>โ€‹::โ€‹max().
โ€” end note
 ]
template<class T> constexpr int countr_zero(T x) noexcept;
Constraints: T is an unsigned integer type ([basic.fundamental]).
Returns: The number of consecutive 0 bits in the value of x, starting from the least significant bit.
Note
:
Returns N if x == 0.
โ€” end note
 ]
template<class T> constexpr int countr_one(T x) noexcept;
Constraints: T is an unsigned integer type ([basic.fundamental]).
Returns: The number of consecutive 1 bits in the value of x, starting from the least significant bit.
Note
:
Returns N if x == numeric_ยญlimits<T>โ€‹::โ€‹max().
โ€” end note
 ]
template<class T> constexpr int popcount(T x) noexcept;
Constraints: T is an unsigned integer type ([basic.fundamental]).
Returns: The number of 1 bits in the value of x.