logo

Jeu de bits C++ et son application

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 boolUne 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êmeMêmePlus rapide