Jeu de bits est un conteneur dans la bibliothèque de modèles standard C++ pour traiter les données au niveau des bits.
1. Un jeu de bits stocke des bits (éléments avec seulement deux valeurs possibles : 0 ou 1). Nous pouvons cependant obtenir la partie d'une chaîne en fournissant des positions au constructeur du jeu de bits (les positions sont par rapport à la position de la chaîne de gauche à droite)
comment exécuter un script
Exemple:
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; }
Sortir:
00110010 00000010 00000001
2. Nous pouvons construire un jeu de bits en utilisant les caractères de std::basic_string _str. Une position de départ facultative _pos et une longueur _n peuvent être fournies ainsi que des caractères indiquant des valeurs alternatives pour les bits activés (_one) et non activés (_zero).
Syntaxe:
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
- Si _pos > str.size() ce constructeur lance std::out_of_range.
- Si l'un des caractères examinés dans _str n'est pas nul ou égal à un, il renvoie std::invalid_argument.
// 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'; }
Sortir:
01001101
3. Construit un objet de classe bitset initialisant les N bits à des valeurs qui correspondent aux caractères fournis dans une chaîne de caractères de style C composée de zéros et de uns. Vous appelez le constructeur sans convertir la chaîne en type chaîne. Il possède également deux paramètres facultatifs _Zero et _One qui indiquent quel caractère dans _Str doit être interprété comme signifiant respectivement un bit 0 et un bit 1.
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'; }
Sortir:
00001111
Opérations de jeu de bits
1. std::bitset::to_string()
Convertit le contenu du jeu de bits en chaîne. Utilise zéro pour représenter les bits avec une valeur false et un pour représenter les bits avec une valeur true. La chaîne résultante contient N caractères dont le premier caractère correspond au dernier (N-1ème) bit et le dernier caractère correspondant au premier bit. Nous pouvons également transmettre les caractères utilisés pour imprimer les valeurs vraies et fausses via les paramètres.
Exemple:
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'; }
Sortir:
00101010 **1*1*1* OOXOXOXO
2. stz :: bitt.
Convertit le contenu du jeu de bits en un entier long non signé. Le premier bit du jeu de bits correspond au chiffre le moins significatif du nombre et le dernier bit correspond au chiffre le plus significatif. La fonction renvoie std::overflow_error si la valeur ne peut pas être représentée dans un format long non signé.
Exemple:
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'; }
Sortir:
5