Un bitset est un tableau de valeurs booléennes mais chaque valeur booléenne n'est pas stockée dans un octet séparé, bitset optimise l'espace de telle sorte que chaque valeur booléenne occupe seulement 1 bit d'espace , donc l'espace occupé par bitset est inférieur à celui d'un tableau de bool ou d'un vecteur de bool .
Une limitation du jeu de bits est que la taille doit être connue au moment de la compilation, c'est-à-dire que la taille du jeu de bits est fixe.
erreur d'exécution
std :: jeu de bits est le modèle de classe pour le jeu de bits défini à l'intérieur En tête de fichier nous devons donc inclure le fichier d'en-tête avant d'utiliser bitset dans notre programme.
Syntaxe:
bitset variable_name(initialization);>
Nous pouvons initialiser bitset de trois manières :
1. Non initialisé : Tous les bits seront mis à zéro.
bitset variable_name;>
2. Initialisation avec un entier décimal : Bitset représentera le nombre décimal donné sous forme binaire.
bitset variable_name(DECIMAL_NUMBER);>
3. Initialisation avec chaîne binaire : Bitset représentera la chaîne binaire donnée.
bitset variable_name(string('BINARY_STRING')); bitset variable_name('BINARY_STRING');>Exemple:
C++ // C++ program to demonstrate the bitset #include #include using namespace std; int main() { // declaring an uninitialized bitset object bitset<8>Bitset non initialisé ; // initialisation avec un jeu de bits de nombre décimal<8>décimalBitset(15); // initialisation avec un jeu de bits de chaîne binaire<8>stringBitset(string('1111')); cout<< 'Uninitialized bitset: ' << uninitializedBitset << endl; cout << 'Initialized with decimal: ' << decimalBitset << endl; cout << 'Initialized with string: ' << stringBitset << endl; return 0; }> Sortir
Uninitialized bitset: 00000000 Initialized with decimal: 00001111 Initialized with string: 00001111>
Fonctions membres std :: bitset
La classe std::bitset contient des fonctions membres utiles pour travailler sur les objets bitset. Voici la liste de quelques fonctions membres de std::bitset :
noyau microlithique
Nom de la fonction | Description de la fonction |
|---|---|
ensemble() | Met le valeur binaire à l'indice donné à 1 . |
réinitialiser() | Met le valeur binaire à un indice donné à 0 . |
retourner() | Inversez la valeur du bit à l'indice donné. |
compter() | Compter le nombre de définir les bits . |
test() | Renvoie le valeur booléenne à l'indice donné . |
n'importe lequel() | Vérifie si n'importe lequel le bit est ensemble . |
aucun() normalisation rdbms | Vérifie si aucun le bit est ensemble. |
tous() | Vérifier si tous le bit est ensemble. |
taille() | Renvoie le taille du jeu de bits. |
vers_chaîne() | Convertit bitset à std :: string. |
suivre() | Convertit bitset à unsigned long. |
à_ullong() | Convertit bitset sur non signé long long. |
Exemple:
C++ // C++ program to demonstrate the // use of std::bitset member // functions #include #include using namespace std; int main() { // declaring index variable int index = 0; // declaring few bitset objects bitset<4>allSet('1111'), allUnset; cout<< 'any() value: ' << boolalpha << allSet.any() << endl; cout << 'all() value: ' << allSet.all() << endl; cout << 'none() value: ' << allSet.none() << endl; cout << 'test() at index 0: ' << noboolalpha << allSet.test(index) << endl; cout << 'size() value: ' << allSet.size() << endl; cout << 'Value of allUnset on before using set(): ' << allUnset << endl; allUnset.set(index); cout << 'Value of allUnset on after using set(): ' << allUnset << endl; cout << 'Value of allSet on before using reset(): ' << allSet << endl; allSet.reset(index); cout << 'Value of allSet on after using reset(): ' << allSet << endl; // declaring an empty string string bitString; // using to_string() method to assign value to empty // string bitString = allSet.to_string(); cout << 'bitString: ' << bitString << endl; cout << 'Unsigned Long value: ' << allSet.to_ulong(); return 0; }> Sortir
any() value: true all() value: true none() value: false test() at index 0: 1 size() value: 4 Value of allUnset on before using set(): 0000 Value of allUnset on after using set(): 0001 Value of allSet on before using reset(): 1111 Value of allSet on after using reset(): 1110 bitString: 1110 Unsigned Long value: 14>
Note: boolalpha est utilisé pour imprimer vrai et faux au lieu de 1 ou 0 pour les valeurs booléennes et noboolalpha pour le contraire.
std :: opérateurs de jeu de bits
Certains opérateurs de base sont surchargés pour fonctionner avec des objets bitset. Voici la liste de ces opérateurs :
Opérateur | Opération |
|---|---|
[] | Accéder opérateur |
& | Au niveau du bit ET |
| RJ12 contre RJ11 | Au niveau du bit OU |
! | Au niveau du bit GRATUIT |
>>= | Binaire Décalage à droite et attribuer |
<<= | Binaire Décalage à gauche et attribuer |
&= | Attribuer la valeur de bit à bit ET au premier ensemble de bits. |
|= | Attribuer la valeur de bit à bit OU au premier ensemble de bits. |
^= | Attribuer la valeur de bit à bit GRATUIT au premier ensemble de bits. |
~ | Au niveau du bit PAS |
Exemple:
C++ // C++ program to show the different operator functions on // bitset #include #include using namespace std; int main() = bitset2) << endl; // bitwise NOT cout << 'Bitwise NOT: ' << (result = ~bitset1) << endl; // bitwise XOR bitset1 = 9; cout << 'Bitwise XOR: ' << (bitset1 ^= bitset2) << endl; bitset1 = 9; cout << 'Binary leftshift on bitwise1: ' << (bitset1 <<= 1) << endl; bitset1 = 9; cout << 'Binary rightshift on bitwise1: ' << (bitset1>>= 1)<< endl; return 0;>
Sortir
Bitset1: 1001 Bitset2: 1010 Accessing bit value at index 1 of bitset1: 0 Bitwise AND using &: 1000 Bitwise AND using &=: 1000 Bitwise OR using |: 1011 Bitwise OR using |=: 1011 Bitwise NOT: 0100 Bitwise XOR: 0011 Binary leftshift on bitwise1: 0010 Binary rightshift on bitwise1: 0100>
Différence entre std :: bitset et std :: vector et un tableau de booléens
Le vecteur de bool et le tableau de bool peuvent également être implémentés pour stocker une séquence de valeurs booléennes comme bitset mais il existe quelques différences entre chaque implémentation :
| Paramètre | jeu de bits | vecteur de bool haricot java | tableau de booléens |
|---|---|---|---|
| Définition | Un modèle de classe constitué d'une séquence de bits stockés de telle sorte que chaque bit occupe 1 bit de mémoire. | Une variation de vecteurs de C++ STL dans laquelle chaque élément est de taille 1 bit et est de type bool | Une collection contiguë de taille fixe d’éléments de données booléens. |
| Taille | Taille fixe. | Taille dynamique. | Taille fixe. |
| Mémoire | Un seul élément occupe 1 bit de mémoire. | Un seul élément occupe 1 bit de mémoire. | Un seul élément occupe 1 octet de mémoire. |
| Vitesse | Même | Même | Plus rapide |