Namespaces
Variants
Views
Actions

Standard library header <bit>

From cppreference.com
< cpp‎ | header
Revision as of 04:58, 21 February 2020 by T. Canens (Talk | contribs)

 
 
Standard library headers
 

This header is part of the numeric library.

Functions

(C++20)
reinterpret the object representation of one type as that of another
(function template) [edit]
checks if a number is an integral power of 2
(function template) [edit]
(C++20)
finds the smallest integral power of two not less than the given value
(function template) [edit]
(C++20)
finds the largest integral power of two not greater than the given value
(function template) [edit]
(C++20)
finds the smallest number of bits needed to represent the given value
(function template) [edit]
(C++20)
computes the result of bitwise left-rotation
(function template) [edit]
(C++20)
computes the result of bitwise right-rotation
(function template) [edit]
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]
counts the number of consecutive 1 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]

Types

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

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 ceil2(T x);
    template <class T>
    constexpr T floor2(T x) noexcept;
    template <class T>
    constexpr T log2p1(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*/
    };
}