logo

C++ bitsett og dets applikasjon

Et bitsett er en rekke booler, men hver boolske verdi lagres ikke i en separat byte i stedet, bitsett optimerer plassen slik at hver boolske verdi tar kun 1-bits plass , så plass tatt av bitsett er mindre enn det for en matrise av bool eller vektor av bool .

En begrensning av bitsettet er det størrelsen må være kjent på kompileringstidspunktet, dvs. størrelsen på bitsettet er fast.



std::bitsett er klassemalen for bitsett som er definert inne header-fil så vi må inkludere header-filen før vi bruker bitsett i programmet vårt.

Syntaks:

hvis annet java
bitset variable_name(initialization);>

Vi kan initialisere bitsett på tre måter:



1. Ikke initialisert: Alle bitene vil bli satt til null.

bitset variable_name;>

2. Initialisering med desimaltall: Bitset vil representere det gitte desimaltallet i binær form.

bitset variable_name(DECIMAL_NUMBER);>

3. Initialisering med binær streng: Bitset vil representere den gitte binære strengen.



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

Eksempel:

C++
// C++ program to demonstrate the bitset  #include  #include  using namespace std; int main() {  // declaring an uninitialized bitset object  bitset<8>uninitializedBitset;  // initialisering med desimaltall bitsett<8>desimalBitset(15);  // initialisering med binær strengbitsett<8>stringBitset(string('1111'));  cout<< 'Uninitialized bitset: ' << uninitializedBitset  << endl;  cout << 'Initialized with decimal: ' << decimalBitset  << endl;  cout << 'Initialized with string: ' << stringBitset  << endl;  return 0; }>

Produksjon
Uninitialized bitset: 00000000 Initialized with decimal: 00001111 Initialized with string: 00001111>

std::bitset Medlemsfunksjoner

std::bitset-klassen inneholder noen nyttige medlemsfunksjoner for å jobbe med bitset-objektene. Her er listen over noen medlemsfunksjoner til std::bitset:

Funksjonsnavn

Funksjonsbeskrivelse

sett()

Sett bitverdi ved gitt indeks til 1 .

nullstille()

Sett bitverdi ved en gitt indeks til 0 .

flip()

Vend bitverdien ved gitt indeks.

telle()

Telle antall sette biter .

test()

Returnerer boolsk verdi ved gitt indeks .

noen()

Sjekker om noen bit er sett .

ingen()

Sjekker om ingen bit er sett.

alle()

Sjekk om alle bit er sett.

størrelse()

Returnerer størrelsen på bitsettet.

to_string()

Konverterer bitsett til std::streng.

å følge()

Konverterer bitsett til usignert lang.

to_ullong()

Konverterer bitsett til usignert lang lang.

Eksempel:

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

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

Merk: boolalpha brukes til å skrive ut sant og usant i stedet for 1 eller 0 for boolske verdier og noboolalpha for motsatt.

std::bitset-operatører

Noen av de grunnleggende operatørene er overbelastet til å jobbe med bitsettobjekter. Følgende er listen over disse operatørene:

Operatør

Operasjon

[]

Adgang operatør

&

Bitvis OG

|

Bitvis ELLER

!

Bitvis GRATIS

>>=

Binær Høyre skift og tildele

<<=

Binær Venstre shift og tildele

&=

Tilordne verdien av bitvis OG til det første bitsettet.

|=

Tilordne verdien av bitvis ELLER til det første bitsettet.

^=

Tilordne verdien av bitvis GRATIS til det første bitsettet.

~

Bitvis IKKE

Eksempel:

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


Produksjon

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>

Forskjellen mellom std::bitset og std::vektor og en matrise med bool

Vektor av bool og array of bool kan også implementeres for å lagre en sekvens av boolske verdier som bitsett, men det er noen forskjeller mellom hver implementering:

Parameter

bitsett

vektor av bool

rekke bool

Definisjon En klassemal som består av en sekvens av biter lagret slik at hver bit opptar 1 bit minne.En variant av vektorer av C++ STL der hvert element er av størrelse 1 bit og er av typen boolEn sammenhengende samling av bool-dataelementer med fast størrelse.
Størrelse Fast størrelse.Dynamisk størrelse.Fast størrelse.
Hukommelse Et enkelt element opptar 1 bit minne.Et enkelt element opptar 1 bit minne.Et enkelt element opptar 1 byte med minne.
Hastighet SammeSammeRaskere