Bitsatz ist ein Container in der C++-Standardvorlagenbibliothek für den Umgang mit Daten auf Bitebene.
1. Ein Bitset speichert Bits (Elemente mit nur zwei möglichen Werten: 0 oder 1). Wir können jedoch den Teil einer Zeichenfolge erhalten, indem wir dem Bitset-Konstruktor Positionen bereitstellen (Positionen beziehen sich auf die Zeichenfolgenposition von links nach rechts).
Java konvertiert char in int
Beispiel:
C++// C++ program to demonstrate that we can get part of a // bit string in bitset. #include #include #include int main() { std::string bit_string = '110010'; std::bitset<8> b1(bit_string); // [0 0 1 1 0 0 1 0] // string from position 2 till end std::bitset<8> b2(bit_string 2); // [0 0 0 0 0 0 1 0] // string from position 2 till next 3 positions std::bitset<8> b3(bit_string 2 3); // [0 0 0 0 0 0 0 1] std::cout << b1 << 'n' << b2 << 'n' << b3 << 'n'; return 0; }
Ausgabe:
00110010 00000010 00000001
2. Wir können ein Bitset mithilfe der Zeichen im std::basic_string _str erstellen. Es können eine optionale Startposition _pos und eine Länge _n sowie Zeichen angegeben werden, die alternative Werte für gesetzte (_one) und nicht gesetzte (_zero) Bits angeben.
Syntax:
std::bitset b1(str pos n zero one); str : string used to initialize the bitset pos : a starting offset into str n : number of characters to use from str zero : alternate character for unset bits in str one : alternate characters for set bits in str
- Wenn _pos > str.size(), löst dieser Konstruktor std::out_of_range aus.
- Wenn eines der in _str untersuchten Zeichen nicht Null oder Eins ist, wird std::invalid_argument ausgegeben.
// C++ program to demonstrate that we can construct bitset using // alternate characters for set and unset bits. #include #include #include int main() { // string constructor using custom zero/one digits std::string alpha_bit_string = 'aBaaBBaB'; std::bitset<8> b1(alpha_bit_string 0 alpha_bit_string.size() 'a' 'B'); // [01001101] std::cout << b1 << 'n'; }
Ausgabe:
01001101
3. Konstruiert ein Objekt der Klasse Bitset und initialisiert die N Bits mit Werten, die den Zeichen entsprechen, die in einer Zeichenfolge aus Nullen und Einsen im C-Stil bereitgestellt werden. Sie rufen den Konstruktor auf, ohne die Zeichenfolge in einen Zeichenfolgentyp umzuwandeln. Es verfügt außerdem über zwei optionale Parameter _Zero und _One, die angeben, welches Zeichen in _Str als 0-Bit bzw. 1-Bit interpretiert werden soll.
C++
#include #include int main() { // char* constructor using custom digits std::bitset<8> b1('XXXXYYYY' 8 'X' 'Y'); // [0 0 0 0 1 1 1 1] std::cout << b1 << 'n'; }
Ausgabe:
00001111
Bitset-Operationen
1. std::bitset::to_string()
Konvertiert den Inhalt des Bitsets in eine Zeichenfolge. Verwendet Null, um Bits mit dem Wert „false“ darzustellen, und Eins, um Bits mit dem Wert „true“ darzustellen. Die resultierende Zeichenfolge enthält N Zeichen, wobei das erste Zeichen dem letzten (N-1.) Bit und das letzte Zeichen dem ersten Bit entspricht. Außerdem können wir die Zeichen, die zum Drucken von wahren und falschen Werten verwendet werden, über die Parameter übergeben.
Beispiel:
C++// C++ program to demonstrate that we can convert contents // of bitset to a string. #include #include int main() { std::bitset<8> b(42); std::cout << b.to_string() << 'n' << b.to_string('*') << 'n' << b.to_string('O' 'X') << 'n'; }
Ausgabe:
00101010 **1*1*1* OOXOXOXO
2. stz::bitt.
Konvertiert den Inhalt des Bitsets in eine vorzeichenlose lange Ganzzahl. Das erste Bit des Bitsatzes entspricht der niedrigstwertigen Ziffer der Zahl und das letzte Bit entspricht der höchstwertigen Ziffer. Die Funktion löst std::overflow_error aus, wenn der Wert nicht in unsigned long dargestellt werden kann.
Beispiel:
C++// C++ program to demonstrate that we can get value of bitset // as unsigned long integer. #include #include int main() { std::bitset<5> b(5); std::cout << b.to_ulong() << 'n'; }
Ausgabe:
5