std::bit_width
| Definiert in Header <bit>
|
||
template< class T >
constexpr int bit_width( T x ) noexcept;
|
(seit C++20) | |
Wenn x nicht Null ist, wird die Anzahl der Bits berechnet, die zum Speichern des Werts x benötigt werden, das heißt 1 + floor(log2(x)). Wenn x Null ist, wird Null zurückgegeben.
Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn T ein vorzeichenloser Ganzzahltyp ist (das heißt unsigned char, unsigned short, unsigned int, unsigned long, unsigned long long oder ein erweiterter vorzeichenloser Ganzzahltyp).
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) |