From cppreference.com
This header is part of the general utilities library, and provides facilities to access, process and manipulate both individual bits and bit sequences.
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 2 not less than the given value (function template) |
(C++20) |
finds the largest integral power of 2 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++29) |
shifts to the left without the possibility of undefined behavior (function template) |
(C++29) |
shifts to the right without the possibility of undefined behavior (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) |
(C++29) |
reverses the bits in an integer (function template) |
(C++29) |
repeats/broadcasts a bit pattern of specified length (function template) |
(C++29) |
compresses bits of an operand using a mask (PEXT) (function template) |
(C++29) |
expands bits from an operand using a mask (PDEP) (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;
// shifting
template<class T, class S>
constexpr T shl(T x, S s) noexcept;
template<class T, class S>
constexpr T shr(T x, S s) noexcept;
// rotating
template<class T>
constexpr T rotl(T x, int s) noexcept;
template<class T>
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;
// permutation
template<class T>
constexpr T bit_reverse(T x) noexcept;
template<class T>
constexpr T bit_repeat(T x, int l);
template<class T>
constexpr T bit_compress(T x, T m) noexcept;
template<class T>
constexpr T bit_expand(T x, T m) noexcept;
// endian
enum class endian {
little = /* see description */,
big = /* see description */,
native = /* see description */
};
}