C++

C++ bitweise Operatoren

C++ bitweise Operatoren
In diesem Artikel werden wir bitweise Operatoren in der Programmiersprache C++ diskutieren. Wir werden mehrere Arbeitsbeispiele sehen, um bitweise Operationen im Detail zu verstehen. In C++ arbeiten die bitweisen Operatoren auf der einzelnen Bitebene.

Kurzer Überblick über bitweise Operatoren

Ein Operator ist ein Symbol, das den Compiler anweist, bestimmte mathematische oder logische Operationen auszuführen. Es gibt verschiedene Arten von Operatoren in C++, wie zum Beispiel:

  1. Rechenzeichen
  2. Logische Operatoren
  3. Relationale Operatoren
  4. Zuweisungsoperatoren
  5. Bitweise Operatoren
  6. Sonstige Operatoren

Alle Bitwise-Operatoren arbeiten auf der Ebene der einzelnen Bits. Der bitweise Operator kann nur auf die Datentypen Integer und Zeichen angewendet werden. Wenn Sie beispielsweise eine Variable vom Typ Integer mit einer Größe von 32 Bit haben und die bitweise NOT-Operation anwenden, wird der bitweise NOT-Operator für alle 32 Bits angewendet. Letztendlich werden also alle 32 Bits in der Variablen invertiert.

In C++ stehen sechs verschiedene bitweise Operatoren zur Verfügung:

  1. Bitweises ODER [dargestellt als „|“]
  2. Bitweise UND [dargestellt als „&“]
  3. Bitweises NICHT [dargestellt als „~“]
  4. Bitweises XOR [dargestellt als „^“]
  5. Bitweise Linksverschiebung [dargestellt als „<<”]
  6. Bitweise Rechtsverschiebung [dargestellt als „>>“]

Bitweise ODER Wahrheitstabelle

Der bitweise OR-Operator erzeugt 1, wenn mindestens ein Operand auf 1 gesetzt ist. Hier ist die Wahrheitstabelle für den bitweisen OR-Operator:

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

Bitweise UND Wahrheitstabelle

Der bitweise AND-Operator erzeugt 1, wenn beide Operanden auf 1 gesetzt sind. Hier ist die Wahrheitstabelle für den bitweisen AND-Operator:

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

Bitweise NICHT Wahrheitstabelle

Bitweiser NOT-Operator invertiert den Operanden. Hier ist die Wahrheitstabelle für den Bitwise NOT-Operator:

Bit-1 ~Bit-1
0 1
1 0

Bitweise XOR-Wahrheitstabelle

Der bitweise XOR-Operator erzeugt 1 nur dann, wenn einer der Operanden auf 1 gesetzt ist. Hier ist die Wahrheitstabelle für den bitweisen AND-Operator:

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

Bitweiser Linksverschiebungsoperator

Der bitweise Linksverschiebungsoperator verschiebt alle Bits um die angegebene Anzahl von angegebenen Bits nach links. Wenn Sie alle Bits der Daten um 1 nach links verschieben, werden die Originaldaten mit 2 multipliziert. Wenn Sie alle Bits der Daten um 2 nach links verschieben, werden die Originaldaten mit 4 multipliziert.

Bitweiser Rechtsverschiebungsoperator

Der bitweise Rechtsverschiebungsoperator verschiebt alle Bits um die angegebene Anzahl von angegebenen Bits nach rechts. Wenn Sie alle Bits der Daten um 1 nach rechts verschieben, werden die Originaldaten durch 2 geteilt (integer Division). Wenn Sie alle Bits der Daten um 2 nach rechts verschieben, werden die Originaldaten durch 4 . geteilt (Ganzzahldivision).

Beispiele

Da wir nun das Grundkonzept bitweiser Operationen verstanden haben, schauen wir uns nun einige Beispiele an, die Ihnen helfen, die bitweisen Operationen in C++ zu verstehen:

Die Beispiele 7 und 8 dienen zur Demonstration der realen Verwendung von bitweisen Operatoren in der Programmiersprache C++.

Beispiel-1: Bitweiser ODER-Operator

In diesem Beispielprogramm demonstrieren wir den bitweisen ODER-Operator.

#einschließen
#einschließen
#einschließen
Verwenden von Namespace-Std;
// display()-Funktion
void display(string print_msg, int Zahl)

Bitsatz<16> myBitSet(Zahl);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int erste_num = 7, zweite_num = 9, result = 0;
// Bitweise ODER-Verknüpfung
Ergebnis = first_num | zweite_num;
// die eingegebenen Zahlen ausgeben
cout << endl;
display("Erste Zahl ist        =  ", first_num);
display("Zweite Zahl ist       =  ", second_num);
// Ausgabewert ausgeben
display("erste_num | zweite_num =  ", Ergebnis);
cout << endl;
0 zurückgeben;

Beispiel-2: Bitweiser UND-Operator

In diesem Beispielprogramm werden wir den bitweisen AND-Operator veranschaulichen.

#einschließen
#einschließen
#einschließen
Verwenden von Namespace-Std;
// display()-Funktion
void display(string print_msg, int Zahl)

Bitsatz<16> myBitSet(Zahl);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int erste_num = 7, zweite_num = 9, result = 0;
// Bitweise UND-Verknüpfung
Ergebnis = erste_Zahl & zweite_Zahl;
// die eingegebenen Zahlen ausgeben
cout << endl;
display("Erste Zahl ist        =  ", first_num);
splay("Zweite Zahl ist       =  ", second_num);
// Ausgabewert ausgeben
display("first_num & second_num =  ", Ergebnis);
cout << endl;
0 zurückgeben;

Beispiel-3: Bitweiser NOT-Operator

In diesem Beispielprogramm werden wir verstehen, wie der Bitweise NOT-Operator in C funktioniert++.

#einschließen
#einschließen
#einschließen
Verwenden von Namespace-Std;
// display()-Funktion
void display(string print_msg, int Zahl)

Bitsatz<16> myBitSet(Zahl);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int erste_num = 7, zweite_num = 9, result_1 = 0, result_2 = 0;
// Bitweise NOT-Operation
result_1 = ~erste_num;
result_2 = ~zweite_num;
// die Eingabezahlen und den Ausgabewert ausgeben
cout << endl;
display("Erste Zahl ist    =  ", first_num);
display("~first_num         =  ", result_1);
cout << endl;
// die Eingabezahlen und den Ausgabewert ausgeben
display("Zweite Zahl ist   =  ", second_num);
display("~second_num        =  ", result_2);
cout << endl;
0 zurückgeben;

Beispiel-4: Bitweiser XOR-Operator

Dieses Programm soll erklären, wie der Bitwise-XOR-Operator in C . funktioniert++.

#einschließen
#einschließen
#einschließen
Verwenden von Namespace-Std;
// display()-Funktion
void display(string print_msg, int Zahl)

Bitsatz<16> myBitSet(Zahl);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int erste_num = 7, zweite_num = 9, result = 0;
// Bitweise XOR-Operation
Ergebnis = erste_Zahl ^ zweite_Zahl;
// die eingegebenen Zahlen ausgeben
cout << endl;
display("Erste Zahl ist        =  ", first_num);
display("Zweite Zahl ist       =  ", second_num);
// Ausgabewert ausgeben
display("erste_num ^ zweite_num =  ", Ergebnis);
cout << endl;
0 zurückgeben;

Beispiel-5: Bitweiser Linksverschiebungsoperator

Nun sehen wir das Beispiel des Bitwise Left Shift Operators. In diesem Programm haben wir zwei Zahlen deklariert, first_num und second_num vom Integer-Typ. Hier wird die „first_num“ um ein Bit nach links und die „second_num“ um zwei Bits nach links verschoben.

#einschließen
#einschließen
#einschließen
Verwenden von Namespace-Std;
// display()-Funktion
void display(string print_msg, int Zahl)

Bitsatz<16> myBitSet(Zahl);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int erste_num = 7, zweite_num = 9, result_1 = 0, result_2 = 0;
// Bitweise Left Shift-Operation
result_1 = first_num << 1;
result_2 = zweite_num << 2;
// die Eingabezahlen und den Ausgabewert ausgeben
cout << endl;
display("Erste Zahl ist    =  ", first_num);
display("first_num << 1     =  ", result_1);
cout << endl;
// die Eingabezahlen und den Ausgabewert ausgeben
display("Zweite Zahl ist   =  ", second_num);
display("zweite_num << 2    =  ", result_2);
cout << endl;
0 zurückgeben;

Beispiel-6: Bitweiser Rechtsverschiebungsoperator

Jetzt werden wir ein weiteres Beispiel sehen, um den Bitwise Right Shift Operator zu verstehen. Wir haben zwei Zahlen deklariert, first_num und second_num vom Integer-Typ. Hier wird die „first_num“ um ein Bit nach rechts und die „second_num“ um zwei Bits nach rechts verschoben.

#einschließen
#einschließen
#einschließen
Verwenden von Namespace-Std;
// display()-Funktion
void display(string print_msg, int Zahl)

Bitsatz<16> myBitSet(Zahl);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int erste_num = 7, zweite_num = 9, result_1 = 0, result_2 = 0;
// Bitweise Rechtsverschiebungsoperation
result_1 = first_num >> 1;
result_2 = zweite_num >> 2;
// die Eingabezahlen und den Ausgabewert ausgeben
cout << endl;
display("Erste Zahl ist    =  ", first_num);
display("first_num >> 1     =  ", result_1);
cout << endl;
// die Eingabezahlen und den Ausgabewert ausgeben
display("Zweite Zahl ist   =  ", second_num);
display("second_num >> 2    =  ", result_2);
cout << endl;
0 zurückgeben;

Beispiel-7: Bit setzen

Dieses Beispiel soll zeigen, wie ein bestimmtes Bit mit bitweisen Operatoren gesetzt wird.

#einschließen
#einschließen
#einschließen
Verwenden von Namespace-Std;
// display()-Funktion
void display(string print_msg, int Zahl)

Bitsatz<16> myBitSet(Zahl);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int erste_num = 7, zweite_num = 9;
// die Eingabenummer ausgeben - first_num
cout << endl;
display("Erste Zahl ist           =  ", first_num);
// 5. Bit setzen
first_num |= (1UL << 5);
// Ausgabe drucken
display("Setze 5. Bit von first_num  =  ", first_num);
cout << endl;
// drucke die Eingabenummer - second_num
cout << endl;
display("Second Number is           =  ", second_num); // 6. Bit setzen
zweite_num |= (1UL << 6);
// Ausgabe drucken
display("Setze das 6. Bit von second_num  =  ", second_num);
cout << endl;
0 zurückgeben;

Beispiel-8: Bit löschen

Dieses Beispiel soll zeigen, wie man ein bestimmtes Bit mit bitweisen Operatoren löscht.

#einschließen
#einschließen
#einschließen
Verwenden von Namespace-Std;
// display()-Funktion
void display(string print_msg, int Zahl)

Bitsatz<16> myBitSet(Zahl);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int erste_num = 7, zweite_num = 9;
// die Eingabenummer ausgeben - first_num
cout << endl;
display("Erste Zahl ist           =  ", first_num);
// 2. Bit löschen
first_num &= ~(1UL << 2);
// Ausgabe drucken
display("Setze 2. Bit von first_num  =  ", first_num);
cout << endl;
// drucke die Eingabenummer - second_num
cout << endl;
display("Zweite Zahl ist           =  ", second_num);
// 3. Bit löschen
zweite_num &= ~(1UL << 3);
// Ausgabe drucken
display("Setze drittes Bit von second_num  =  ", second_num);
cout << endl;
0 zurückgeben;

Fazit

Der bitweise Operator wird hauptsächlich verwendet, um die einzelnen Bits für Integer- und Zeichendatentypen zu manipulieren. Der bitweise Operator wird häufig in der Embedded-Software-Entwicklung verwendet. Wenn Sie also einen Gerätetreiber oder ein System sehr nah an der Hardware-Ebene entwickeln, sollten Sie diese bitweisen Operatoren verwenden.

Die 5 besten Arcade-Spiele für Linux
Heutzutage sind Computer ernsthafte Maschinen, die zum Spielen verwendet werden. Wenn du den neuen Highscore nicht bekommst, weißt du was ich meine. I...
Schlacht um Wesnoth 1.13.6 Entwicklung veröffentlicht
Schlacht um Wesnoth 1.13.6, das letzten Monat veröffentlicht wurde, ist die sechste Entwicklungsversion im 1.13.x-Serie und bietet eine Reihe von Verb...
So installieren Sie League of Legends auf Ubuntu 14.04
Wenn Sie ein Fan von League of Legends sind, dann ist dies eine Gelegenheit für Sie, League of Legends zu testen. Beachten Sie, dass LOL von PlayOnLin...