Namespaces
Variants

std::countr_one

From cppreference.com
 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
Integer comparison functions
(C++20)(C++20)(C++20)    
(C++20)
Swap and type operations
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Common vocabulary types
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
Defined in header <bit>
template< class T >
constexpr int countr_one( T x ) noexcept;
(since C++20)

Returns the number of consecutive 1 bits in the value of x, starting from the least significant bit (“right”).

Parameters

x - a value whose bits to count
Type requirements
T - must be an unsigned integer type (that is, unsigned char, unsigned short, unsigned int, unsigned long, unsigned long long, or an extended unsigned integer type) in order to participate in overload resolution.

Return value

The number of consecutive 1 bits in the value of x, starting from the least significant bit.

Notes

Feature-test macro Value Std Feature
__cpp_lib_bitops 201907L (C++20) Bit operations

Example

#include <bit>
#include <bitset>
#include <cstdint>
#include <iostream>

int main()
{
    for (const std::uint8_t i : {0, 0b11111111, 0b11111110, 0b11100011})
        std::cout << "countr_one( " << std::bitset<8>(i) << " ) = "
                  << std::countr_one(i) << '\n';
}

Output:

countr_one( 00000000 ) = 0
countr_one( 11111111 ) = 8
countr_one( 11111110 ) = 0
countr_one( 11100011 ) = 2

See also

counts the number of consecutive 0 bits, starting from the most significant bit
(function template) [edit]
counts the number of consecutive 1 bits, starting from the most significant bit
(function template) [edit]
counts the number of consecutive 0 bits, starting from the least significant bit
(function template) [edit]
(C++20)
counts the number of 1 bits in an unsigned integer
(function template) [edit]
checks if a number is an integral power of 2
(function template) [edit]
returns the number of bits set to true
(public member function of std::bitset<N>) [edit]
checks if all, any or none of the bits are set to true
(public member function of std::bitset<N>) [edit]