From cppreference.com
This header is part of the
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
namespacestd{// bit_casttemplate<classTo,classFrom>constexprTobit_cast(constFrom&from)noexcept;// byteswaptemplate<classT>constexprTbyteswap(Tvalue)noexcept;// integral powers of 2template<classT>constexprboolhas_single_bit(Tx)noexcept;template<classT>constexprTbit_ceil(Tx);template<classT>constexprTbit_floor(Tx)noexcept;template<classT>constexprintbit_width(Tx)noexcept;// shiftingtemplate<classT,classS>constexprTshl(Tx,Ss)noexcept;template<classT,classS>constexprTshr(Tx,Ss)noexcept;// rotatingtemplate<classT>constexprTrotl(Tx,ints)noexcept;template<classT>constexprTrotr(Tx,ints)noexcept;// countingtemplate<classT>constexprintcountl_zero(Tx)noexcept;template<classT>constexprintcountl_one(Tx)noexcept;template<classT>constexprintcountr_zero(Tx)noexcept;template<classT>constexprintcountr_one(Tx)noexcept;template<classT>constexprintpopcount(Tx)noexcept;// permutationtemplate<classT>constexprTbit_reverse(Tx)noexcept;template<classT>constexprTbit_repeat(Tx,intl);template<classT>constexprTbit_compress(Tx,Tm)noexcept;template<classT>constexprTbit_expand(Tx,Tm)noexcept;// endianenumclassendian{little=/* see description */,big=/* see description */,native=/* see description */};}