Standard library header <bit>

From cppreference.com
< cpp‎ | header
 
 
 

This header is part of the numeric library.

Functions

(C++20)
reinterpret the object representation of one type as that of another
(function template)
checks if a number is an integral power of two
(function template)
(C++20)
finds the smallest integral power of two not less than the given value
(function template)
(C++20)
finds the largest integral power of two not greater than the given value
(function template)
(C++20)
finds the smallest number of bits needed to represent the given value
(function template)
(C++20)
computes the result of bitwise left-rotation
(function template)
(C++20)
computes the result of bitwise right-rotation
(function template)
counts the number of consecutive 0 bits, starting from the most significant bit
(function template)
counts the number of consecutive 1 bits, starting from the most significant bit
(function template)
counts the number of consecutive 0 bits, starting from the least significant bit
(function template)
counts the number of consecutive 1 bits, starting from the least significant bit
(function template)
(C++20)
counts the number of 1 bits in an unsigned integer
(function template)

Types

(C++20)
indicates the endianness of scalar types
(enum)

Synopsis

namespace std {
    // bit_cast
    template<typename To, typename From>
    constexpr To bit_cast(const From& from) noexcept;
 
    // integral powers of 2
    template <class T>
    constexpr bool has_single_bit(T x) noexcept;
    template <class T>
    constexpr T bit_ceil(T x);
    template <class T>
    constexpr T bit_floor(T x) noexcept;
    template <class T>
    constexpr T bit_width(T x) noexcept;
 
    // rotating
    template<class T>
    [[nodiscard]] constexpr T rotl(T x, int s) noexcept;
    template<class T>
    [[nodiscard]] constexpr T rotr(T x, int s) noexcept;
 
    // counting
    template<class T>
    constexpr int countl_zero(T x) noexcept;
    template<class T>
    constexpr int countl_one(T x) noexcept;
    template<class T>
    constexpr int countr_zero(T x) noexcept;
    template<class T>
    constexpr int countr_one(T x) noexcept;
    template<class T>
    constexpr int popcount(T x) noexcept;
 
    // endian
    enum class endian {
        little = /*implementation-defined*/,
        big    = /*implementation-defined*/,
        native = /*implementation-defined*/
    };
}