std:: bit_width
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
(C++20)
|
||||
|
(C++23)
|
||||
| Integral powers of 2 | ||||
|
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
||||
|
bit_width
(C++20)
|
||||
| Rotating | ||||
|
(C++20)
|
||||
|
(C++20)
|
||||
| Counting | ||||
|
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
||||
| Endian | ||||
|
(C++20)
|
|
Definiert im Header
<bit>
|
||
|
template
<
class
T
>
constexpr int bit_width ( T x ) noexcept ; |
(seit C++20) | |
Wenn x nicht null ist, berechnet die Anzahl der Bits, die benötigt werden, um den Wert x zu speichern, das heißt, \(1 + \lfloor \log_2(x) \rfloor\) 1 + floor(log 2 (x)) . Wenn x null ist, wird null zurückgegeben.
Diese Überladung nimmt nur dann an der Überladungsauflösung teil, wenn
T
ein vorzeichenloser Ganzzahltyp ist (also
unsigned
char
,
unsigned
short
,
unsigned
int
,
unsigned
long
,
unsigned
long
long
oder ein erweiterter vorzeichenloser Ganzzahltyp).
Inhaltsverzeichnis |
Parameter
| x | - | vorzeichenloser Ganzzahlwert |
Rückgabewert
Null, wenn x null ist; andernfalls eins plus der Basis-2-Logarithmus von x , wobei alle Nachkommastellen verworfen werden.
Hinweise
Diese Funktion ist äquivalent zu return std:: numeric_limits < T > :: digits - std:: countl_zero ( x ) ; .
| Feature-Test Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_int_pow2
|
202002L
|
(C++20) | Ganzzahlige Zweierpotenz- 2 Operationen |
Beispiel
#include <bit> #include <bitset> #include <iostream> int main() { for (unsigned x{}; x != 010; ++x) std::cout << "bit_width( " << std::bitset<4>{x} << " ) = " << std::bit_width(x) << '\n'; }
Ausgabe:
bit_width( 0000 ) = 0 bit_width( 0001 ) = 1 bit_width( 0010 ) = 2 bit_width( 0011 ) = 2 bit_width( 0100 ) = 3 bit_width( 0101 ) = 3 bit_width( 0110 ) = 3 bit_width( 0111 ) = 3
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 3656 | C++20 |
der Rückgabetyp von
bit_width
ist derselbe wie der Typ des Funktionsarguments
|
geändert zu int |
Siehe auch
|
(C++20)
|
Zählt die Anzahl der aufeinanderfolgenden
0
Bits, beginnend vom höchstwertigen Bit
(Funktions-Template) |