C ++

C ++ bitvise operatører

C ++ bitvise operatører
I denne artikel skal vi diskutere bitvise operatorer på programmeringssprog C ++. Vi vil se flere arbejdseksempler for at forstå bitvise operationer i detaljer. I C ++ arbejder de bitvise operatorer på det enkelte bitniveau.

Kort oversigt over bitvise operatører

En operator er et symbol, der instruerer kompilatoren om at udføre bestemte matematiske eller logiske operationer. Der er flere typer operatører i C ++, såsom:

  1. Aritmetiske operatører
  2. Logiske operatører
  3. Relationelle operatører
  4. Opgaveoperatører
  5. Bitvise operatører
  6. Diverse operatører

Alle Bitwise-operatører arbejder på det enkelte bitniveau. Den bitvise operator kan kun anvendes på heltal og karakterdatatyper. For eksempel, hvis du har en heltalstypevariabel med størrelsen på 32 bit, og du anvender bitvis IKKE-operation, vil bitvis IKKE-operatoren blive anvendt på alle 32 bit. Så til sidst vil alle de 32 bits i variablen blive omvendt.

Der er seks forskellige bitvise operatører er tilgængelige i C ++:

  1. Bitvis ELLER [repræsenteret som “|”]
  2. Bitvis OG [repræsenteret som “&”]
  3. Bitvis IKKE [repræsenteret som “~”]
  4. Bitvis XOR [repræsenteret som “^”]
  5. Bitvis venstre skift [repræsenteret som “<<”]
  6. Bitvis højre skift [repræsenteret som ">>"]

Bitvis ELLER sandhedstabel

Bitwise OR-operatøren producerer 1, når mindst en operand er indstillet til 1. Her er sandhedstabellen for Bitwise OR-operatøren:

Bit-1 Bit-2 Bit-1 | Bit-2
0 0 0
0 1 1
1 0 1
1 1 1

Bitvis og sandhedstabel

Bitvis OG-operator producerer 1, når begge operander er indstillet til 1. Her er sandhedstabellen for Bitwise AND-operatøren:

Bit-1 Bit-2 Bit-1 og Bit-2
0 0 0
0 1 0
1 0 0
1 1 1

Bitvis IKKE sandhedstabel

Bitvis operatør IKKE inverterer operanden. Her er sandhedstabellen for Bitwise NOT-operatør:

Bit-1 ~ Bit-1
0 1
1 0

Bitwise XOR Sandhedstabel

Bitwise XOR-operatør producerer 1 hvis og kun hvis en af ​​operanderne er indstillet til 1. Her er sandhedstabellen for Bitwise AND-operatør:

Bit-1 Bit-2 Bit-1 ^ Bit-2
0 0 0
0 1 1
1 0 1
1 1 0

Bitvis venstre skiftoperatør

Bitwise Left Shift-operator skifter alle bits tilbage med det specificerede antal specificerede bits. Hvis du venstre skifter alle bitene af dataene med 1, bliver de originale data ganget med 2. Tilsvarende, hvis du forlod skifter alle bitene af dataene med 2, bliver de originale data ganget med 4.

Bitvis højre skiftoperatør

Bitwise Right Shift-operator skifter alle bits til højre med det angivne antal specificerede bits. Hvis du højre skifter alle bitene af dataene med 1, deles de originale data (heltal) med 2. Tilsvarende, hvis du højre skifter alle bitene af dataene med 2, deles de originale data (heltal) med 4.

Eksempler

Nu, da vi har forstået det grundlæggende koncept for bitvise operationer, så lad os se på et par eksempler, som hjælper dig med at forstå de bitvise operationer i C ++:

Eksemplet 7 og 8 er til at demonstrere den virkelige verdens brug af bitvise operatører i C ++ programmeringssprog.

Eksempel 1: Bitvis ELLER operatør

I dette eksempelprogram vil vi demonstrere Bitwise OR-operatøren.

#omfatte
#omfatte
#omfatte
ved hjælp af namespace std;
// display () funktion
ugyldig visning (streng print_msg, int-nummer)

bitsæt<16> myBitSet (nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, result = 0;
// Bitvis ELLER drift
resultat = første_nummer | second_num;
// udskriv inputnumrene
cout << endl;
display ("First Number is =", first_num);
display ("Second Number is =", second_num);
// udskriv outputværdien
display ("first_num | second_num =", resultat);
cout << endl;
returnere 0;

Eksempel 2: Bitvis OG operatør

I dette eksempelprogram illustrerer vi Bitwise OG operator.

#omfatte
#omfatte
#omfatte
ved hjælp af namespace std;
// display () funktion
ugyldig visning (streng print_msg, int-nummer)

bitsæt<16> myBitSet (nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, result = 0;
// Bitvis OG drift
resultat = første nummer & andet nummer;
// udskriv inputnumrene
cout << endl;
display ("First Number is =", first_num);
splay ("Andet tal er =", andet_num);
// udskriv outputværdien
display ("first_num & second_num =", result);
cout << endl;
returnere 0;

Eksempel 3: Bitvis IKKE operatør

I dette eksempelprogram vil vi forstå, hvordan Bitwise NOT-operatøren fungerer i C++.

#omfatte
#omfatte
#omfatte
ved hjælp af namespace std;
// display () funktion
ugyldig visning (streng print_msg, int-nummer)

bitsæt<16> myBitSet (nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, result_1 = 0, result_2 = 0;
// Bitvis IKKE drift
resultat_1 = ~ første_nummer;
resultat_2 = ~ sekund_nummer;
// udskriv inputnumrene og outputværdien
cout << endl;
display ("First Number is =", first_num);
display ("~ first_num =", result_1);
cout << endl;
// udskriv inputnumrene og outputværdien
display ("Second Number is =", second_num);
display ("~ second_num =", result_2);
cout << endl;
returnere 0;

Eksempel 4: Bitvis XOR-operatør

Dette program har til hensigt at forklare, hvordan Bitwise XOR-operatøren fungerer i C++.

#omfatte
#omfatte
#omfatte
ved hjælp af namespace std;
// display () funktion
ugyldig visning (streng print_msg, int-nummer)

bitsæt<16> myBitSet (nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, result = 0;
// Bitvis XOR-drift
resultat = første_num ^ andet_num;
// udskriv inputnumrene
cout << endl;
display ("First Number is =", first_num);
display ("Second Number is =", second_num);
// udskriv outputværdien
display ("first_num ^ second_num =", resultat);
cout << endl;
returnere 0;

Eksempel 5: Bitvis venstre skiftoperatør

Nu vil vi se eksemplet på Bitwise Left Shift-operatøren. I dette program har vi deklareret to tal, first_num og second_num af heltalstypen. Her er "first_num" venstre-forskudt med en bit, og "second_num" er venstre-forskudt med to bits.

#omfatte
#omfatte
#omfatte
ved hjælp af namespace std;
// display () funktion
ugyldig visning (streng print_msg, int-nummer)

bitsæt<16> myBitSet (nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, result_1 = 0, result_2 = 0;
// Bitvis Venstre Shift-operation
resultat_1 = første_nummer << 1;
resultat_2 = sekund_nummer << 2;
// udskriv inputnumrene og outputværdien
cout << endl;
display ("First Number is =", first_num);
display ("første_nummer << 1     =  ", result_1);
cout << endl;
// udskriv inputnumrene og outputværdien
display ("Second Number is =", second_num);
display ("second_num << 2    =  ", result_2);
cout << endl;
returnere 0;

Eksempel 6: Bitvis højre skiftoperatør

Nu ser vi et andet eksempel for at forstå Bitwise Right Shift-operatøren. Vi har deklareret to tal, first_num og second_num af heltalstypen. Her forskydes "første_num" med en bit, og "andet_nummer" er højre-forskudt med to bit.

#omfatte
#omfatte
#omfatte
ved hjælp af namespace std;
// display () funktion
ugyldig visning (streng print_msg, int-nummer)

bitsæt<16> myBitSet (nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, result_1 = 0, result_2 = 0;
// Bitvis Right Shift-operation
resultat_1 = første_nummer >> 1;
result_2 = second_num >> 2;
// udskriv inputnumrene og outputværdien
cout << endl;
display ("First Number is =", first_num);
display ("first_num >> 1 =", result_1);
cout << endl;
// udskriv inputnumrene og outputværdien
display ("Second Number is =", second_num);
display ("second_num >> 2 =", result_2);
cout << endl;
returnere 0;

Eksempel 7: Indstil bit

Dette eksempel har til hensigt at vise, hvordan man indstiller en bestemt bit ved hjælp af bitvise operatorer.

#omfatte
#omfatte
#omfatte
ved hjælp af namespace std;
// display () funktion
ugyldig visning (streng print_msg, int-nummer)

bitsæt<16> myBitSet (nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9;
// udskriv inputnummeret - first_num
cout << endl;
display ("First Number is =", first_num);
// Indstil 5. bit
first_num | = (1UL << 5);
// Udskriv output
display ("Set 5th bit of first_num =", first_num);
cout << endl;
// udskriv inputnummeret - second_num
cout << endl;
display ("Second Number is =", second_num); // Indstil 6. bit
second_num | = (1UL << 6);
// Udskriv output
display ("Set 6th bit of second_num =", second_num);
cout << endl;
returnere 0;

Eksempel 8: Ryd bit

Dette eksempel har til hensigt at vise, hvordan man rydder en bestemt bit ved hjælp af bitvise operatorer.

#omfatte
#omfatte
#omfatte
ved hjælp af namespace std;
// display () funktion
ugyldig visning (streng print_msg, int-nummer)

bitsæt<16> myBitSet (nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9;
// udskriv inputnummeret - first_num
cout << endl;
display ("First Number is =", first_num);
// Ryd 2. bit
first_num & = ~ (1UL << 2);
// Udskriv output
display ("Set 2nd bit of first_num =", first_num);
cout << endl;
// udskriv inputnummeret - second_num
cout << endl;
display ("Second Number is =", second_num);
// Ryd 3. bit
second_num & = ~ (1UL << 3);
// Udskriv output
display ("Set 3rd bit of second_num =", second_num);
cout << endl;
returnere 0;

Konklusion

Den bitvise operator bruges primært til at manipulere de enkelte bits til heltal og karakterdatatype. Den bitvise operatør bruges stærkt til indbygget softwareudvikling. Så hvis du udvikler en enhedsdriver eller et system meget tæt på hardwareniveauet, kan du måske bruge disse bitvise operatører.

Shadow of the Tomb Raider til Linux-vejledning
Shadow of the Tomb Raider er den tolvte tilføjelse til Tomb Raider-serien - en action-adventure-spilfranchise oprettet af Eidos Montreal. Spillet blev...
Sådan styrkes FPS i Linux?
FPS står for Billeder i sekundet. FPS's opgave er at måle billedhastigheden i videoafspilninger eller spiloptræden. I enkle ord betegnes antallet af u...
Top Oculus App Lab-spil
Hvis du er Oculus-headset-ejer, skal du være opmærksom på sideloading. Sideladning er processen med at installere ikke-butiksindhold på dit headset. S...