Bitweiser Operator in der C- und C++-Programmierung

Veröffentlicht: 2022-12-09

Im RAM sind Daten als Folge von Bytes organisiert. Jedes Byte enthält acht aufeinanderfolgende Bits. Die bitweisen Operatoren von C und C++ sind hilfreich, wenn Sie einige arithmetische Operationen an Datenbits ausführen möchten. Sie sind ziemlich schneller und werden gelegentlich verwendet, um die Effizienz eines Programms zu verbessern. Sie arbeiten an bitweisen Algorithmen, die Operationen auf Bitebene ausführen oder Bits auf verschiedene Weise manipulieren.

Die Arten von Bitwise-Operatoren in C & C++:

  1. Bitweises UND
  2. Bitweises ODER
  3. Bitweise NICHT
  4. Bitweises Exklusiv-Oder (XOR)
  5. Linksverschiebungsoperator
  6. Rechtsverschiebungsoperator

Lassen Sie uns auf die Details von jedem von ihnen eingehen:

Inhaltsverzeichnis

1. Bitweises UND:

Der bitweise UND-Operator in C oder C++ verwendet ein einzelnes kaufmännisches Und (&). Es nimmt zwei Zahlen als Operanden und führt UND an allen ihren Bits aus. Das Ergebnis ist nur dann 1, wenn beide Bits 1 sind. Wenn eines der Bits 0 ist, ist das Ergebnis 0. Im Wesentlichen übernimmt dieser binäre Operator in C und C++ das logische UND der Bits an jeder Position der gegebenen zwei Zahlen binäre Form.

Beispiel:

Angenommen, die binäre Darstellung zweier Zahlen a & b ist:

a = 01011000

b = 10111001

Also a & b = 00011000

Wie aus obigem Beispiel ersichtlich, zeigt das Ergebnis nur an den Stellen „1“, an denen sowohl die Zahlen a als auch b eine 1 haben. Für alle anderen Stellen zeigt das Ergebnis „0“.

2. Bitweises ODER:

In C & C++ funktioniert bitweises OR ganz ähnlich wie bitweises AND. Der einzige Unterschied besteht darin, dass beim bitweisen ODER-Operator nur eines der beiden Bits „1“ sein sollte, damit die Position des Bits im Ergebnis „1“ ist. Dieser Operator nimmt zwei Zahlen als Operanden und führt eine ODER-Verknüpfung mit jedem Bit der beiden Zahlen durch.

Es funktioniert auf folgende Weise:

  • Wenn beide Bits '1' sind, ist das Ergebnis '1'.
  • Wenn beide Bits '0' sind, ist das Ergebnis '0'.
  • Wenn eines der Bits '1' ist, ist das Ergebnis '1'.

Es ist einer der einfachsten und am häufigsten verwendeten bitweisen C++-Operatoren. Sein Symbol ist das Rohr |. Außerdem ist er identisch mit dem Booleschen logischen Operator ||.

Beispiel:

Angenommen, die binäre Darstellung zweier Zahlen a| b ist:

a = 01101001

b = 10111000

Also, ein| b = 11111001

3. Bitweises NICHT:

Auch als bitweiser NOT-Operator bekannt, dreht er jedes Bit im Ergebnis um. Sein Symbol ist die Tilde (~). Eine einfache Möglichkeit, sich an die Funktionsweise dieses Operators zu erinnern, besteht darin, dass die Tilde gelegentlich als Twiddle bezeichnet wird und das bitweise Komplement jedes Bit dreht. Das heißt, wenn Sie eine 1 haben, ist das Ergebnis 0 und umgekehrt. Mit anderen Worten, dieser bitweise Operator in C und C++ nimmt eine Zahl und invertiert alle Bits.

Bei der Bestimmung des größtmöglichen Werts für eine beliebige Zahl ohne Vorzeichen ist dies einer der nützlichsten bitweisen C++-Operatoren .

Beispiel:

unsigned int num = ~0;

Hier bedeutet 0 nur Nullen: 00000000. Die Implementierung des bitweisen NOT-Operators ergibt also 1s: 11111111. Da num ein unsigned int ist, müssen Sie sich keine Gedanken über Vorzeichenbits oder Zweierkomplemente machen. 1s ist die größtmögliche Zahl im Ergebnis.

Eines der entscheidenden Merkmale des bitweisen NOT-Operators ist das Zweierkomplement. Das Zweierkomplement einer Zahl ist gleich dem Komplement dieser Zahl plus 1.

Beispiel:

a = 00000000

Also, sein 2er-Komplement = -(11111111+1) = -00000000 = -0 (dezimal)

Hinweis: Das bitweise Komplement einer beliebigen Zahl N ist gleich -(N+1).

Lernen Sie Softwareentwicklungskurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.

4. Bitweises Exklusiv-ODER (XOR):

Die Exklusiv-ODER-Operation akzeptiert zwei Eingaben und gibt eine 1 aus, wenn entweder eine oder die anderen Eingaben eine 1 ist. Das Ergebnis ist jedoch 0, wenn beide 1 sind. Wenn beide Eingaben 0 oder beide 1 sind, ist das Ergebnis 0. Das Ergebnis von XOR ist nur dann 1, wenn die beiden Bits unterschiedlich sind. Das Symbol dieses binären Operators in C & C++ ist Caret (^). Außerdem wird dieser bitweise Operator in C & C++ als XOR abgekürzt. Es führt die Exklusiv-ODER-Operation an jedem Bitpaar durch. Es ist wichtig zu beachten, dass es zu diesem Operator kein Gegenstück zum booleschen Operator gibt.

Beispiel:

Angenommen, wir haben zwei Zahlen als

a = 10101010

b = 01110010

Jetzt a ^ b = 10101010 ^ 01110010 = 11011000

Sie können XOR folgendermaßen verstehen. Angenommen, Sie haben ein Bit, entweder 0 oder 1, das Sie A nennen. Wenn Sie nun A XOR 0 nehmen, erhalten Sie A zurück. Also, wenn A 1 ist, bekommst du 1 und umgekehrt. Wenn Sie A XOR 1 nehmen, bedeutet dies, dass Sie A umdrehen. Wenn A also 1 ist, erhalten Sie 0 und umgekehrt.

Wenn Sie die bitweise XOR-Operation zweimal implementieren, dh Sie haben zwei Bits, A und B, und Sie setzen C = A XOR B, dann führen Sie C XOR B aus. In diesem Fall erhalten Sie als Ergebnis A XOR B XOR C. Entweder wird jedes Bit von A zweimal umgedreht oder es wird kein Bit umgedreht. Daher erhalten Sie einfach ein A zurück, so wie es ist.

Sie können die binäre XOR-Operation als eine Art selektives Twiddle betrachten. Wenn Sie XOR auf zwei Zahlen anwenden, von denen eine nur 1 ist, entspricht das Ergebnis einem Twiddle.

5. Linksverschiebungsoperator:

Dieser bitweise Operator verschiebt alle Bits um eine bestimmte Anzahl der angegebenen Bits nach links. Die Bitpositionen, die der linke Schiebeoperator geleert hat, werden mit 0 gefüllt. Sein Symbol ist <<.

In C oder C++ funktioniert es so, dass es zuerst zwei Zahlen nimmt, die Bits des ersten Operanden nach links verschiebt und der zweite Operand angibt, um wie viele Stellen die Zahl verschoben werden soll.

Syntax:

ein <<= 5

Hier ist das Beispiel-C/C++-Programm zur Implementierung des Linksverschiebungsoperators:

int Haupt()

{

int a = 5;

ein <<= 2;

count << “x : ” << x << endl;

}

Ausgabe: a = 20

Beliebte Kurse und Artikel zum Thema Softwareentwicklung

Beliebte Programme
Executive PG-Programm in Softwareentwicklung - IIIT B Blockchain-Zertifikatsprogramm - PURDUE Programm für Cybersicherheitszertifikate - PURDUE MSC in Informatik - IIIT B
Andere beliebte Artikel
Cloud Engineer Gehalt in den USA 2021-22 Gehalt als AWS-Lösungsarchitekt in den USA Backend-Entwicklergehalt in den USA Front-End-Entwicklergehalt in den USA
Gehalt für Webentwickler in den USA Fragen im Vorstellungsgespräch für Scrum Master im Jahr 2022 Wie starte ich 2022 eine Karriere in der Cybersicherheit? Karrieremöglichkeiten in den USA für Ingenieurstudenten

6. Rechtsverschiebungsoperator:

Dieser bitweise Operator verschiebt alle Bits um eine bestimmte Anzahl der angegebenen Bits nach rechts. Sein Symbol ist >>. In C oder C++ nimmt dieser Operator zuerst zwei Zahlen, verschiebt die Bits des ersten Operanden nach rechts, und der zweite Operand gibt den Betrag der Verschiebung der Zahl an.

Syntax:

a >>= 5

Ein Beispiel-C/C++-Programm zur Implementierung des Rechtsverschiebungsoperators:

int Haupt() {

int a = 5;

a >> = 2;

count << “x : ” << x << endl;

}

Ausgang: a = 1

Beliebte Kurse und Artikel zum Thema Softwareentwicklung

Beliebte Programme
Executive PG-Programm in Softwareentwicklung - IIIT B Blockchain-Zertifikatsprogramm - PURDUE Programm für Cybersicherheitszertifikate - PURDUE MSC in Informatik - IIIT B
Andere beliebte Artikel
Cloud Engineer Gehalt in den USA 2021-22 Gehalt als AWS-Lösungsarchitekt in den USA Backend-Entwicklergehalt in den USA Front-End-Entwicklergehalt in den USA
Gehalt für Webentwickler in den USA Fragen im Vorstellungsgespräch für Scrum Master im Jahr 2022 Wie starte ich 2022 eine Karriere in der Cybersicherheit? Karrieremöglichkeiten in den USA für Ingenieurstudenten

Wann sollten Sie die bitweisen Operatoren in C & C++ verwenden?

  • Spart Platz:

Bitweise Operatoren helfen, Platz zu sparen. Ein häufig auftretendes Problem bei der Arbeit auf der Ebene einzelner Bits besteht darin, dass Sie möglicherweise große Teile Ihres Programms neu entwerfen müssen, wenn Sie mehr Platz benötigen oder Zeit sparen möchten. Aber die Verwendung bitweiser Operatoren in C & C++ kann Abhängigkeiten eliminieren; Sie können beispielsweise ~0 verwenden, um die größtmögliche Ganzzahl zu erhalten. Die Bitverschiebung zum Multiplizieren mit zwei ist eine typische Operation. Daher hat dies keinen Einfluss auf die Lesbarkeit, im Gegensatz zu der erweiterten Verwendung der Bitmanipulation, die sich in einigen Fällen auswirken kann.

  • Verschlüsselung:

Wenn Sie an einer Art von Verschlüsselung oder an einem System arbeiten, das Bitfelder zum Speichern der booleschen Attribute benötigt.

Einzigartige Fakten über bitweise Operatoren

  • Das bitweise ODER zweier Zahlen ist einfach die Summe dieser Zahlen, wenn kein Übertrag beteiligt ist. Andernfalls müssen Sie einfach ihr bitweises UND hinzufügen. Angenommen, x = 5(101) und y = 2(010). Da es keinen Übertrag gibt, ist die Summe einfach x|y. Aber wenn wir jetzt 'x' zu 6 (110) ändern, ändert sich die Summe zu x|y + x&y, weil jetzt ein Übertrag beteiligt ist.
  • Der bitweise XOR-Operator ist aus Sicht des technischen Interviews am wertvollsten. Ein Beispiel für eines der damit verbundenen Interviewprobleme wird hier diskutiert. „Finde für die gegebene Zahlenmenge, die aus allen Elementen besteht, die mit Ausnahme einer Zahl geradzahlig vorkommen, die ungerade vorkommende Zahl.“ Sie müssen XOR mit allen Zahlen ausführen, um dieses Problem zu lösen.
  • Die bitweisen Rechts- und Linksverschiebungsoperatoren dürfen nicht für negative Zahlen verwendet werden. Der zweite Operand, der die Anzahl der Verschiebungen bestimmt, enthält eine negative Zahl, was zu undefiniertem Verhalten in C & C++ führt. Beispielsweise sind die Ergebnisse von 1 >>- 1 und 1 << -1 nicht definiert.
  • Das Verhalten ist nicht spezifiziert, wenn die Verschiebung der Zahl die Kapazität der Ganzzahl überschreitet. Beispielsweise ist 1 << 65 nicht angegeben, wenn Ganzzahlen im 64-Bit-Format gespeichert werden.
  • Es findet keine Schiebeoperation statt, wenn der zweite Operand (der die Anzahl der Schiebevorgänge bestimmt) 0 ist.

Beginnen Sie Ihre Reise in die Informatik mit UpGrad:

Wenn Sie detailliert über die Frontend-Entwicklung (JavaScript, HTML, CSS), das Backend (NoSQL-MongoDB) und Microservices erfahren möchten, können Sie den Master of Science in Computer Science von UpGrad absolvieren . Dieser Kurs wird von IIIT Bangalore & LJMU Alumni Status angeboten und hilft Ihnen, Ihre Karriere als Softwareingenieur/Full-Stack-Entwickler bei den Technologiegiganten auf der ganzen Welt zu starten.

Der Kurs umfasst den kostenlosen Zugang zum Career Transition Bootcamp für Anfänger und Nicht-Tech-Programmierer. In diesem Kurs lernen Sie mehr als zehn Programmiersprachen und -tools, die Sie gründlich darauf vorbereiten, komplexe Rollen in der Industrie zu übernehmen.

Wozu dienen die bitweisen Operatoren in C++?

In C++ führen bitweise Operatoren Operationen auf ganzzahligen Daten auf binärer Ebene aus. Sie arbeiten mit Bitmustern, die die Manipulation einzelner Bits beinhalten. Daher wird eine bitweise Operation auch als Programmierung auf Bitebene bezeichnet. Bitweise Operatoren in C++ werden hauptsächlich für schnellere Berechnungen verwendet, da sie nur mit zwei Ziffern arbeiten, dh 0 und 1. Diese Operatoren können auch Tests durchführen und die tatsächlichen Bits verschieben.

Können Sie die Links- und Rechtsverschiebungsoperatoren zusammen in einem Code verwenden?

Ja, Sie können die Linksverschiebungs- und Rechtsverschiebungsoperatoren kombinieren und danach die Daten aus einem ganzzahligen Ausdruck extrahieren.

Dreht der komplementäre Operator die gesamte Codesequenz um?

Nein, tut es nicht. Es vertauscht die Einsen und Nullen. Also werden alle Einsen zu Nullen und umgekehrt.

Warum ist der andere Name des Bitwise-Komplementoperators One's Complement Operator?

Der Grund dafür ist, dass immer nur ein Operand oder Wert verwendet wird. Es ist ein unärer Operator. Wenn Sie ein Komplement für beliebige Bits ausführen, werden alle Nullen zu Einsen und umgekehrt. Beispiel: Sie haben einen ganzzahligen Ausdruck mit dem Wert 1111 0000. Nachdem Sie die bitweise Komplementoperation durchgeführt haben, wird der Wert zu 0000 1111.