Bitset is een container in de C++ Standard Template Library voor het omgaan met gegevens op bitniveau.
1. Een bitset slaat bits op (elementen met slechts twee mogelijke waarden: 0 of 1). We kunnen echter het deel van een string verkrijgen door posities aan de bitset-constructor te verstrekken (posities hebben betrekking op de stringpositie van links naar rechts)
verklaring dekking
Voorbeeld:
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; }
Uitgang:
00110010 00000010 00000001
2. We kunnen een bitset construeren met behulp van de tekens in de std::basic_string _str. Een optionele startpositie _pos en lengte _n kunnen worden geleverd, evenals tekens die alternatieve waarden aanduiden voor ingestelde (_one) en niet-ingestelde (_nul) bits.
Syntaxis:
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
- Als _pos > str.size() gooit deze constructor std::out_of_range.
- Als een van de onderzochte tekens in _str niet nul of één is, wordt std::invalid_argument gegenereerd.
// 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'; }
Uitgang:
01001101
3. Construeert een object van klasse bitset, waarbij de N bits worden geïnitialiseerd op waarden die overeenkomen met de tekens die zijn opgegeven in een c-stijl tekenreeks van nullen en enen. Je roept de constructor aan zonder de string in een stringtype te gieten. Het heeft ook twee optionele parameters _Zero en _One, die aangeven welk teken in _Str moet worden geïnterpreteerd als respectievelijk een 0-bit en een 1-bit.
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'; }
Uitgang:
00001111
Bitset-bewerkingen
1. std::bitset::to_string()
Converteert de inhoud van de bitset naar een string. Gebruikt nul om bits met de waarde false weer te geven en één om bits met de waarde true weer te geven. De resulterende reeks bevat N tekens, waarbij het eerste teken overeenkomt met de laatste (N-1e) bit en het laatste teken overeenkomt met de eerste bit. We kunnen ook de tekens doorgeven die worden gebruikt om de waarden waar en onwaar af te drukken via de parameters.
Voorbeeld:
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'; }
Uitgang:
00101010 **1*1*1* OOXOXOXO
2. stz::bitt.
Converteert de inhoud van de bitset naar een lang geheel getal zonder teken. Het eerste bit van de bitset komt overeen met het minst significante cijfer van het getal en het laatste bit komt overeen met het meest significante cijfer. Functie genereert std::overflow_error als de waarde niet kan worden weergegeven in unsigned long.
Voorbeeld:
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'; }
Uitgang:
5