libstdc++
Bit manipulation
Collaboration diagram for Bit manipulation:

Macros

#define __cpp_lib_bit_cast
 
#define __cpp_lib_bitops
 
#define __cpp_lib_endian
 
#define __cpp_lib_int_pow2
 

Enumerations

enum class  std::endian { little , big , native }
 

Functions

template<typename _To , typename _From >
requires (sizeof(_To) == sizeof(_From)) && __is_trivially_copyable(_To) && __is_trivially_copyable(_From)
constexpr _To std::bit_cast (const _From &__from) noexcept
 
template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp > std::bit_ceil (_Tp __x) noexcept
 
template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp > std::bit_floor (_Tp __x) noexcept
 
template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp > std::bit_width (_Tp __x) noexcept
 
template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp, int > std::countl_one (_Tp __x) noexcept
 
template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp, int > std::countl_zero (_Tp __x) noexcept
 
template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp, int > std::countr_one (_Tp __x) noexcept
 
template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp, int > std::countr_zero (_Tp __x) noexcept
 
template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp, bool > std::has_single_bit (_Tp __x) noexcept
 
template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp, int > std::popcount (_Tp __x) noexcept
 
template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp > std::rotl (_Tp __x, int __s) noexcept
 
template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp > std::rotr (_Tp __x, int __s) noexcept
 

Detailed Description

Utilities for examining and manipulating individual bits.

Macro Definition Documentation

◆ __cpp_lib_bit_cast

#define __cpp_lib_bit_cast

Definition at line 69 of file bit.

◆ __cpp_lib_bitops

#define __cpp_lib_bitops

Definition at line 375 of file bit.

◆ __cpp_lib_endian

#define __cpp_lib_endian

Definition at line 457 of file bit.

◆ __cpp_lib_int_pow2

#define __cpp_lib_int_pow2

Definition at line 431 of file bit.

Enumeration Type Documentation

◆ endian

enum class std::endian
strong

Byte order constants.

The platform endianness can be checked by comparing std::endian::native to one of std::endian::big or std::endian::little.

Since
C++20

Definition at line 466 of file bit.

Function Documentation

◆ bit_cast()

template<typename _To , typename _From >
requires (sizeof(_To) == sizeof(_From)) && __is_trivially_copyable(_To) && __is_trivially_copyable(_From)
constexpr _To std::bit_cast ( const _From &  __from)
constexprnoexcept

Create a value of type To from the bits of from.

Template Parameters
_ToA trivially-copyable type.
Parameters
__fromA trivially-copyable object of the same size as _To.
Returns
An object of type _To.
Since
C++20

Definition at line 81 of file bit.

◆ bit_ceil()

template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp > std::bit_ceil ( _Tp  __x)
constexprnoexcept

The smallest power-of-two not less than x.

Definition at line 442 of file bit.

◆ bit_floor()

template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp > std::bit_floor ( _Tp  __x)
constexprnoexcept

The largest power-of-two not greater than x.

Definition at line 448 of file bit.

◆ bit_width()

template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp > std::bit_width ( _Tp  __x)
constexprnoexcept

The smallest integer greater than the base-2 logarithm of x.

Definition at line 454 of file bit.

◆ countl_one()

template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp, int > std::countl_one ( _Tp  __x)
constexprnoexcept

The number of contiguous one bits, starting from the highest bit.

Definition at line 408 of file bit.

◆ countl_zero()

template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp, int > std::countl_zero ( _Tp  __x)
constexprnoexcept

The number of contiguous zero bits, starting from the highest bit.

Definition at line 402 of file bit.

◆ countr_one()

template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp, int > std::countr_one ( _Tp  __x)
constexprnoexcept

The number of contiguous one bits, starting from the lowest bit.

Definition at line 420 of file bit.

◆ countr_zero()

template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp, int > std::countr_zero ( _Tp  __x)
constexprnoexcept

The number of contiguous zero bits, starting from the lowest bit.

Definition at line 414 of file bit.

◆ has_single_bit()

template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp, bool > std::has_single_bit ( _Tp  __x)
constexprnoexcept

True if x is a power of two, false otherwise.

Definition at line 436 of file bit.

Referenced by std::assume_aligned().

◆ popcount()

template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp, int > std::popcount ( _Tp  __x)
constexprnoexcept

The number of bits set in x.

Definition at line 426 of file bit.

◆ rotl()

template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp > std::rotl ( _Tp  __x,
int  __s 
)
constexprnoexcept

Rotate x to the left by s bits.

Definition at line 388 of file bit.

◆ rotr()

template<typename _Tp >
constexpr _If_is_unsigned_integer< _Tp > std::rotr ( _Tp  __x,
int  __s 
)
constexprnoexcept

Rotate x to the right by s bits.

Definition at line 394 of file bit.