Standard library header <bit> (C++20)

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

endian

(C++20)

indicates the endianness of scalar types
(enum)

[edit]

Functions

bit_cast

(C++20)

reinterpret the object representation of one type as that of another
(function template)

[edit]

byteswap

(C++23)

reverses the bytes in the given integer value
(function template)

[edit]

has_single_bit

(C++20)

checks if a number is an integral power of 2
(function template)

[edit]

bit_ceil

(C++20)

finds the smallest integral power of 2 not less than the given value
(function template)

[edit]

bit_floor

(C++20)

finds the largest integral power of 2 not greater than the given value
(function template)

[edit]

bit_width

(C++20)

finds the smallest number of bits needed to represent the given value
(function template)

[edit]

shl

(C++29)

shifts to the left without the possibility of undefined behavior
(function template)

[edit]

shr

(C++29)

shifts to the right without the possibility of undefined behavior
(function template)

[edit]

rotl

(C++20)

computes the result of bitwise left-rotation
(function template)

[edit]

rotr

(C++20)

computes the result of bitwise right-rotation
(function template)

[edit]

countl_zero

(C++20)

counts the number of consecutive 0 bits, starting from the most significant bit
(function template)

[edit]

countl_one

(C++20)

counts the number of consecutive 1 bits, starting from the most significant bit
(function template)

[edit]

countr_zero

(C++20)

counts the number of consecutive 0 bits, starting from the least significant bit
(function template)

[edit]

countr_one

(C++20)

counts the number of consecutive 1 bits, starting from the least significant bit
(function template)

[edit]

popcount

(C++20)

counts the number of 1 bits in an unsigned integer
(function template)

[edit]

bit_reverse

(C++29)

reverses the bits in an integer
(function template)

[edit]

bit_repeat

(C++29)

repeats/broadcasts a bit pattern of specified length
(function template)

[edit]

bit_compress

(C++29)

compresses bits of an operand using a mask (PEXT)
(function template)

[edit]

bit_expand

(C++29)

expands bits from an operand using a mask (PDEP)
(function template)

[edit]

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 */};}