logo

Setul de biți C++ și aplicația acestuia

Un set de biți este o matrice de boole, dar fiecare valoare booleană nu este stocată într-un octet separat, setul de biți optimizează spațiul astfel încât fiecare valoare booleană ocupă doar spațiu de 1 bit , asa de spațiul ocupat de set de biți este mai mic decât cel al unui tablou de bool sau vector de bool .

sortare inserare java

O limitare a setului de biți este aceea dimensiunea trebuie cunoscută în momentul compilării, adică dimensiunea setului de biți este fixă.



std::bitset este șablonul de clasă pentru set de biți care este definit în interior fișier antet deci trebuie să includem fișierul antet înainte de a folosi bitset în programul nostru.

Sintaxă:

bitset variable_name(initialization);>

Putem inițializa set-ul de biți în trei moduri:



1. Neinițializat: Toți biții vor fi setați la zero.

bitset variable_name;>

2. Inițializare cu număr întreg zecimal: Bitset va reprezenta numărul zecimal dat în formă binară.

bitset variable_name(DECIMAL_NUMBER);>

3. Inițializare cu șir binar: Bitset va reprezenta șirul binar dat.



bitset variable_name(string('BINARY_STRING')); bitset variable_name('BINARY_STRING');>

Exemplu:

C++
// C++ program to demonstrate the bitset  #include  #include  using namespace std; int main() {  // declaring an uninitialized bitset object  bitset<8>uninitializedBitset;  // inițializare cu un set de biți de număr zecimal<8>decimalBitset(15);  // inițializare cu un set de biți șir binar<8>stringBitset(string('1111'));  cout<< 'Uninitialized bitset: ' << uninitializedBitset  << endl;  cout << 'Initialized with decimal: ' << decimalBitset  << endl;  cout << 'Initialized with string: ' << stringBitset  << endl;  return 0; }>

Ieșire
Uninitialized bitset: 00000000 Initialized with decimal: 00001111 Initialized with string: 00001111>

Funcții membru std::bitset

Clasa std::bitset conține câteva funcții membre utile pentru a lucra asupra obiectelor bitset. Iată lista unor funcții membre ale std::bitset:

format șir în java

Numele funcției

Descrierea funcției

a stabilit()

Seteaza valoare de biți la indicele dat la 1 .

reset()

Seteaza valoare de biți la un indice dat la 0 .

flip()

Întoarceți valoarea biților la indicele dat.

numara()

Numara numarul setati biti .

Test()

Returnează valoare booleană la indicele dat .

orice()

Verifică dacă orice bit este a stabilit .

nici unul()

cum se schimbă șirul în int
Verifică dacă nici unul bit este a stabilit.

toate()

Verifica daca toate bit este a stabilit.

mărimea()

Returnează dimensiunea setului de biți.

to_string()

Se convertește bitset la std::string.

a urma()

Se convertește bitset la unsigned long.

to_ullong()

Se convertește bitset la unsigned long long.

Exemplu:

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; }>

Ieșire
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>

Notă: boolalpha este folosit pentru a tipări adevărat și fals în loc de 1 sau 0 pentru valori booleene și noboolalpha pentru opus.

Operatori std::bitset

Unii dintre operatorii de bază sunt supraîncărcați pentru a lucra cu obiecte bitset. Mai jos este lista acelor operatori:

Operator

Operațiune

[]

knn
Acces operator

&

Pe bit ȘI

|

Pe bit SAU

!

Pe bit GRATUIT

>>=

Binar Schimbarea la dreapta și atribuie

<<=

Binar Schimb la stânga și atribuie

&=

Atribuiți valoarea bitwise ȘI la primul set de biți.

|=

Atribuiți valoarea bitwise SAU la primul set de biți.

^=

Atribuiți valoarea bitwise GRATUIT la primul set de biți.

~

Pe bit NU

Exemplu:

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;>


Ieșire

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>

Diferența dintre std::bitset și std::vector și o matrice de bool

Vector de bool și matrice de bool pot fi, de asemenea, implementate pentru a stoca o secvență de valori booleene, cum ar fi set de bit, dar există unele diferențe între fiecare implementare:

Parametru

set de biți

descărcare xvideoservicethief ubuntu 14.04

vector de bool

matrice de bool

Definiție Un șablon de clasă constând dintr-o secvență de biți stocați astfel încât fiecare bit să ocupe 1 bit de memorie.O variație a vectorilor C++ STL în care fiecare element are dimensiunea de 1 bit și este de tip boolO colecție contiguă de dimensiuni fixe de elemente de date bool.
mărimea Marime fixa.Dimensiune dinamică.Marime fixa.
Memorie Un singur element ocupă 1 bit de memorie.Un singur element ocupă 1 bit de memorie.Un singur element ocupă 1 octet de memorie.
Viteză La felLa felMai repede