Namespaces
Variants

std::bit_width

Von de.cppreference.net
 
 
Hilfsmittelbibliothek
Sprachunterstützung
Typunterstützung (grundlegende Typen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Hilfsmittel
Variadische Funktionen
Coroutinen-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Drei-Wege-Vergleich
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Allgemeine Hilfsmittel
Relationale Operatoren (in C++20 veraltet)
Ganzzahlvergleichsfunktionen
(C++20)(C++20)(C++20)    
(C++20)
Tausch und Typoperationen
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Allgemeine Vokabular-Typen
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
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

Zählt die Anzahl der aufeinanderfolgenden ​ 0 ​ Bits, beginnend vom höchstwertigen Bit
(Funktions-Template)