C++

C++ Bitwise-operators

C++ Bitwise-operators
In dit artikel gaan we bitsgewijze operators in de programmeertaal C++ bespreken. We zullen verschillende werkvoorbeelden zien om bitsgewijze bewerkingen in detail te begrijpen. In C++ werken de bitsgewijze operators op het individuele bitniveau.

Kort overzicht van Bitwise-operators

Een operator is een symbool dat de compiler instrueert om bepaalde wiskundige of logische bewerkingen uit te voeren. Er zijn verschillende soorten operators in C++, zoals:

  1. Rekenkundige operatoren
  2. Logische operators
  3. Relationele operators
  4. Toewijzingsoperators
  5. Bitsgewijze operators
  6. Diverse operators

Alle Bitwise-operators werken op individueel bitniveau. De bitsgewijze operator kan alleen worden toegepast op de gegevenstypen integer en karakter. Als u bijvoorbeeld een variabele van het type integer heeft met de grootte van 32 bits en u de bitsgewijze NOT-bewerking toepast, wordt de bitsgewijze NOT-operator toegepast voor alle 32 bits. Dus uiteindelijk zullen alle 32 bits in de variabele worden omgekeerd.

Er zijn zes verschillende bitsgewijze operators beschikbaar in C++:

  1. Bitsgewijze OF [weergegeven als "|"]
  2. Bitsgewijze AND [weergegeven als "&"]
  3. Bitwise NOT [weergegeven als "~"]
  4. Bitwise XOR [weergegeven als "^"]
  5. Bitwise Left Shift [weergegeven als "<<”]
  6. Bitwise Right Shift [weergegeven als ">>"]

Bitsgewijze OF-waarheidstabel

De Bitwise OR-operator produceert 1 wanneer ten minste één operand is ingesteld op 1. Hier is de waarheidstabel voor de Bitwise OR-operator:

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

Bitsgewijze EN Waarheidstabel

Bitsgewijze AND-operator produceert 1 wanneer beide operanden zijn ingesteld op 1. Hier is de waarheidstabel voor de Bitwise AND-operator:

Bit-1 Bit-2 Bit-1 & Bit-2
0 0 0
0 1 0
1 0 0
1 1 1

Bitsgewijze NIET-waarheidstabel

Bitwise NOT-operator keert de operand om. Hier is de waarheidstabel voor de Bitwise NOT-operator:

Bit-1 ~ Bit-1
0 1
1 0

Bitwise XOR-waarheidstabel

Bitsgewijze XOR-operator produceert 1 als, en alleen als, een van de operanden is ingesteld op 1. Hier is de waarheidstabel voor de Bitwise AND-operator:

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

Bitsgewijze linker shift-operator

Bitwise Left Shift-operator verschuift alle resterende bits met het opgegeven aantal opgegeven bits. Als u naar links alle bits van de gegevens met 1 hebt verschoven, worden de oorspronkelijke gegevens vermenigvuldigd met 2. Evenzo, als u alle bits van de gegevens met 2 naar links verplaatst, worden de oorspronkelijke gegevens vermenigvuldigd met 4.

Bitwise Right Shift-operator

Bitwise Right Shift-operator verschuift alle bits naar rechts met het opgegeven aantal opgegeven bits. Als u alle bits van de gegevens met 1 naar rechts verschuift, worden de oorspronkelijke gegevens gedeeld (integer-deling) door 2. Evenzo, als u alle bits van de gegevens met 2 naar rechts verschuift, worden de oorspronkelijke gegevens gedeeld (integer-deling) door 4.

Voorbeelden

Nu we het basisconcept van bitsgewijze bewerkingen hebben begrepen, laten we een paar voorbeelden bekijken, die u zullen helpen de bitsgewijze bewerkingen in C++ te begrijpen:

De voorbeelden 7 en 8 zijn bedoeld om het gebruik van bitsgewijze operatoren in de C++-programmeertaal in de praktijk te demonstreren.

Voorbeeld-1: Bitsgewijze OR-operator

In dit voorbeeldprogramma demonstreren we de Bitwise OR-operator.

#include
#include
#include
namespace std; gebruiken;
// display() functie
void display (string print_msg, int nummer)

bitset<16> mijnBitSet(nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int hoofd()

int first_num = 7, second_num = 9, resultaat = 0;
// Bitsgewijze OF-bewerking
resultaat = eerste_nummer | tweede_num;
// print de ingevoerde nummers
cout << endl;
display("Eerste nummer is        =  ", first_num);
display("Tweede Nummer is       =  ", second_num);
// druk de uitvoerwaarde af
display("first_num | second_num =  ", resultaat);
cout << endl;
retourneer 0;

Voorbeeld-2: Bitsgewijze AND-operator

In dit voorbeeldprogramma illustreren we Bitwise AND-operator.

#include
#include
#include
namespace std; gebruiken;
// display() functie
void display (string print_msg, int nummer)

bitset<16> mijnBitSet(nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int hoofd()

int first_num = 7, second_num = 9, resultaat = 0;
// Bitsgewijze EN-bewerking
resultaat = eerste_num & tweede_num;
// print de ingevoerde nummers
cout << endl;
display("Eerste nummer is        =  ", first_num);
splay("Tweede Nummer is       =  ", second_num);
// druk de uitvoerwaarde af
display("first_num & second_num =  ", resultaat);
cout << endl;
retourneer 0;

Voorbeeld-3: Bitwise NOT-operator

In dit voorbeeldprogramma zullen we begrijpen hoe de Bitwise NOT-operator werkt in C++.

#include
#include
#include
namespace std; gebruiken;
// display() functie
void display (string print_msg, int nummer)

bitset<16> mijnBitSet(nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int hoofd()

int first_num = 7, second_num = 9, resultaat_1 = 0, resultaat_2 = 0;
// Bitsgewijze NIET-bewerking
resultaat_1 = ~eerste_getal;
resultaat_2 = ~seconde_num;
// print de invoernummers en uitvoerwaarde
cout << endl;
display("Eerste nummer is    =  ", first_num);
display("~first_num         =  ", resultaat_1);
cout << endl;
// print de invoernummers en uitvoerwaarde
display("Tweede Nummer is   =  ", second_num);
display("~second_num        =  ", result_2);
cout << endl;
retourneer 0;

Voorbeeld-4: Bitsgewijze XOR-operator

Dit programma is bedoeld om uit te leggen hoe de Bitwise XOR-operator werkt in C++.

#include
#include
#include
namespace std; gebruiken;
// display() functie
void display (string print_msg, int nummer)

bitset<16> mijnBitSet(nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int hoofd()

int first_num = 7, second_num = 9, resultaat = 0;
// Bitsgewijze XOR-bewerking
resultaat = eerste_num ^ tweede_num;
// print de ingevoerde nummers
cout << endl;
display("Eerste nummer is        =  ", first_num);
display("Tweede Nummer is       =  ", second_num);
// druk de uitvoerwaarde af
display("first_num ^ second_num =  ", resultaat);
cout << endl;
retourneer 0;

Voorbeeld-5: Bitsgewijze linker shift-operator

Nu zullen we het voorbeeld zien van de Bitwise Left Shift-operator. In dit programma hebben we twee getallen gedeclareerd, first_num en second_num van het type integer. Hier wordt het "first_num" één bit naar links verschoven en het "second_num" twee bits naar links verschoven.

#include
#include
#include
namespace std; gebruiken;
// display() functie
void display (string print_msg, int nummer)

bitset<16> mijnBitSet(nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int hoofd()

int first_num = 7, second_num = 9, resultaat_1 = 0, resultaat_2 = 0;
// Bitwise Left Shift-bewerking
resultaat_1 = eerste_getal << 1;
resultaat_2 = tweede_getal << 2;
// print de invoernummers en uitvoerwaarde
cout << endl;
display("Eerste nummer is    =  ", first_num);
display("first_num << 1     =  ", result_1);
cout << endl;
// print de invoernummers en uitvoerwaarde
display("Tweede Nummer is   =  ", second_num);
display("second_num << 2    =  ", result_2);
cout << endl;
retourneer 0;

Voorbeeld-6: Bitwise Right Shift-operator

Nu zullen we nog een voorbeeld zien om de Bitwise Right Shift-operator te begrijpen. We hebben twee getallen gedeclareerd, first_num en second_num van het type integer. Hier is het "first_num" één bit naar rechts verschoven en het "second_num" twee bits naar rechts verschoven.

#include
#include
#include
namespace std; gebruiken;
// display() functie
void display (string print_msg, int nummer)

bitset<16> mijnBitSet(nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int hoofd()

int first_num = 7, second_num = 9, resultaat_1 = 0, resultaat_2 = 0;
// Bitwise Right Shift-bewerking
resultaat_1 = eerste_num >> 1;
resultaat_2 = tweede_getal >> 2;
// print de invoernummers en uitvoerwaarde
cout << endl;
display("Eerste nummer is    =  ", first_num);
display("first_num >> 1     =  ", result_1);
cout << endl;
// print de invoernummers en uitvoerwaarde
display("Tweede Nummer is   =  ", second_num);
display("second_num >> 2    =  ", result_2);
cout << endl;
retourneer 0;

Voorbeeld-7: Bit instellen

Dit voorbeeld is bedoeld om te laten zien hoe u een bepaald bit instelt met behulp van bitsgewijze operators.

#include
#include
#include
namespace std; gebruiken;
// display() functie
void display (string print_msg, int nummer)

bitset<16> mijnBitSet(nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int hoofd()

int eerste_num = 7, tweede_num = 9;
// print het ingevoerde nummer - first_num
cout << endl;
display("Eerste nummer is           =  ", first_num);
// Stel 5e bit in
first_num |= (1UL << 5);
// Afdrukuitvoer
display("Stel het 5e bit van first_num in  =  ", first_num);
cout << endl;
// druk het invoernummer af - second_num
cout << endl;
display("Second Number is           =  ", second_num);// Stel 6e bit in
second_num |= (1UL << 6);
// Afdrukuitvoer
display("Stel het 6e bit van second_num in  =  ", second_num);
cout << endl;
retourneer 0;

Voorbeeld-8: Bit wissen

Dit voorbeeld is bedoeld om te laten zien hoe een bepaald bit kan worden gewist met behulp van bitsgewijze operatoren.

#include
#include
#include
namespace std; gebruiken;
// display() functie
void display (string print_msg, int nummer)

bitset<16> mijnBitSet(nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int hoofd()

int eerste_num = 7, tweede_num = 9;
// print het ingevoerde nummer - first_num
cout << endl;
display("Eerste nummer is           =  ", first_num);
// Wis 2e bit
first_num &= ~(1UL << 2);
// Afdrukuitvoer
display("Stel het tweede bit van first_num in  =  ", first_num);
cout << endl;
// druk het invoernummer af - second_num
cout << endl;
display("Tweede Nummer is           =  ", second_num);
// Wis 3e bit
second_num &= ~(1UL << 3);
// Afdrukuitvoer
display("Stel het derde bit van second_num in  =  ", second_num);
cout << endl;
retourneer 0;

Conclusie

De bitsgewijze operator wordt voornamelijk gebruikt om de individuele bits te manipuleren voor het gegevenstype integer en karakter. De bitsgewijze operator wordt veel gebruikt bij de ontwikkeling van embedded software. Dus als u een apparaatstuurprogramma of een systeem ontwikkelt dat zeer dicht bij het hardwareniveau ligt, wilt u misschien deze bitsgewijze operators gebruiken.

Installeer de nieuwste OpenRA Strategy Game op Ubuntu Linux
OpenRA is een Libre/Free Real Time Strategy-game-engine die de vroege Westwood-games nabootst, zoals de klassieke Command & Conquer: Red Alert. Gedist...
Installeer de nieuwste Dolphin Emulator voor Gamecube & Wii op Linux
Met de Dolphin Emulator kun je de door jou gekozen Gamecube- en Wii-spellen spelen op Linux Personal Computers (pc). Omdat het een vrij beschikbare e...
Hoe de GameConqueror Cheat Engine in Linux te gebruiken
Het artikel bevat een handleiding over het gebruik van de GameConqueror cheat-engine in Linux. Veel gebruikers die games op Windows spelen, gebruiken ...