Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/header/bit"

From cppreference.com
< cpp‎ | header
m (Text replace - "log2p1" to "bit_width")
(move synopsis to template)
 
(10 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{cpp/header/title|bit}}
+
{{cpp/header/title|bit|notes={{mark c++20}}}}
 
{{cpp/header/navbar}}
 
{{cpp/header/navbar}}
 
This header is part of the [[cpp/numeric|numeric]] library.
 
This header is part of the [[cpp/numeric|numeric]] library.
  
=== Functions ===
 
 
{{dsc begin}}
 
{{dsc begin}}
 +
{{dsc h1 | Types}}
 +
{{dsc inc | cpp/types/dsc endian}}
 +
{{dsc h1 | Functions}}
 
{{dsc inc | cpp/numeric/dsc bit_cast}}
 
{{dsc inc | cpp/numeric/dsc bit_cast}}
 +
{{dsc inc | cpp/numeric/dsc byteswap}}
 
{{dsc inc | cpp/numeric/dsc has_single_bit}}
 
{{dsc inc | cpp/numeric/dsc has_single_bit}}
 
{{dsc inc | cpp/numeric/dsc bit_ceil}}
 
{{dsc inc | cpp/numeric/dsc bit_ceil}}
Line 17: Line 20:
 
{{dsc inc | cpp/numeric/dsc countr_one}}
 
{{dsc inc | cpp/numeric/dsc countr_one}}
 
{{dsc inc | cpp/numeric/dsc popcount}}
 
{{dsc inc | cpp/numeric/dsc popcount}}
{{dsc end}}
 
 
=== Types ===
 
{{dsc begin}}
 
{{dsc inc | cpp/types/dsc endian}}
 
 
{{dsc end}}
 
{{dsc end}}
  
 
=== Synopsis ===
 
=== Synopsis ===
{{source|1=
+
{{cpp/synopsis/bit}}
namespace std {
+
    // bit_cast
+
    template<typename To, typename From>
+
    constexpr To bit_cast(const From& from) 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 T bit_width(T x) noexcept;
+
 
+
    // rotating
+
    template<class T>
+
    [[nodiscard]] constexpr T rotl(T x, int s) noexcept;
+
    template<class T>
+
    [[nodiscard]] 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;
+
 
+
    // endian
+
    enum class endian {
+
        little = /*implementation-defined*/,
+
        big    = /*implementation-defined*/,
+
        native = /*implementation-defined*/
+
    };
+
}
+
}}
+
  
{{langlinks|ja|zh}}
+
{{langlinks|de|es|ja|ru|zh}}

Latest revision as of 07:12, 27 November 2023

 
 
Standard library headers
 

This header is part of the numeric library.

Types

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

Functions

(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]
checks if a number is an integral power of 2
(function template) [edit]
(C++20)
finds the smallest integral power of two not less than the given value
(function template) [edit]
(C++20)
finds the largest integral power of two 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]
(C++20)
computes the result of bitwise left-rotation
(function template) [edit]
(C++20)
computes the result of bitwise right-rotation
(function template) [edit]
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]

[edit] 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;
 
  // 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;
 
  // endian
  enum class endian {
    little = /* see description */,
    big    = /* see description */,
    native = /* see description */
  };
}