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:
- Rechenzeichen
- Logische Operatoren
- Relationale Operatoren
- Zuweisungsoperatoren
- Bitweise Operatoren
- 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:
- Bitweises ODER [dargestellt als „|“]
- Bitweise UND [dargestellt als „&“]
- Bitweises NICHT [dargestellt als „~“]
- Bitweises XOR [dargestellt als „^“]
- Bitweise Linksverschiebung [dargestellt als „<<”]
- 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:
- Beispiel-1: Bitweiser ODER-Operator
- Beispiel-2: Bitweiser UND-Operator
- Beispiel-3: Bitweiser NOT-Operator
- Beispiel-4: Bitweiser XOR-Operator
- Beispiel-5: Bitweiser Linksverschiebungsoperator
- Beispiel-6: Bitweiser Rechtsverschiebungsoperator
- Beispiel-7: Bit setzen
- Beispiel-8: Bit löschen
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.