Namespaces
Variants

std:: bit_width

From cppreference.net
Utilities library
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 + 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

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