Difference between revisions of "cpp/header/bit"
From cppreference.com
m (→Synopsis: LWG3656 applied; btw, `bit_width` is more about "counting" than about "integral powers of 2") |
|||
Line 2: | Line 2: | ||
{{cpp/header/navbar}} | {{cpp/header/navbar}} | ||
This header is part of the [[cpp/numeric|numeric]] library. | This header is part of the [[cpp/numeric|numeric]] library. | ||
+ | |||
+ | {{rev begin}} | ||
+ | {{rev| This header is a [[cpp/freestanding|freestanding]] header.}} | ||
+ | {{rev end}} | ||
{{dsc begin}} | {{dsc begin}} |
Revision as of 20:15, 15 September 2022
This header is part of the numeric library.
This header is a freestanding header. |
Types | |
(C++20) |
indicates the endianness of scalar types (enum) |
Functions | |
(C++20) |
reinterpret the object representation of one type as that of another (function template) |
(C++23) |
reverses the bytes in the given integer value (function template) |
(C++20) |
checks if a number is an integral power of 2 (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) |
(C++20) |
counts the number of consecutive 0 bits, starting from the most significant bit (function template) |
(C++20) |
counts the number of consecutive 1 bits, starting from the most significant bit (function template) |
(C++20) |
counts the number of consecutive 0 bits, starting from the least significant bit (function template) |
(C++20) |
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) |
Synopsis
namespace std { // bit_cast template<class To, class From> constexpr To bit_cast(const From& from) noexcept; // byteswap template <class T> constexpr T byteswap(T value) 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 int 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 = /* see description */, big = /* see description */, native = /* see description */ }; }