Bit manipulation (since C++20) - cppreference.com

From cppreference.com

Provides several function templates to access, manipulate, and process individual bits and bit sequences.

Defined in header <bit>

Defined in namespace std

(C++20)

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

(C++23)

reverses the bytes in the given integer value
(function template) [edit]
Integral powers of 2
checks if a number is an integral power of 2
(function template) [edit]

(C++20)

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

(C++20)

finds the largest integral power of 2 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]
Rotating

(C++20)

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

(C++20)

computes the result of bitwise right-rotation
(function template) [edit]
Counting
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]
Endian

(C++20)

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

Notes

Feature-test macro Value Std Feature
__cpp_lib_bit_cast 201806L (C++20) std::bit_cast
__cpp_lib_bitops 201907L (C++20) Bit operations
__cpp_lib_int_pow2 202002L (C++20) Integral power-of-2 operations
__cpp_lib_byteswap 202110L (C++23) std::byteswap

See also