C # Bitweise Operatoren: AND-, OR-, XOR-, Komplement- und Shift-Operationen

In diesem Tutorial erfahren Sie mehr über bitweise und Bitverschiebungsoperatoren in C #. C # bietet 4 bitweise und 2 Bitverschiebungsoperatoren.

Bitweise und Bitverschiebungsoperatoren werden verwendet, um Operationen auf Bitebene für ganzzahlige (int, long usw.) und boolesche Daten auszuführen. Diese Operatoren werden in realen Situationen normalerweise nicht verwendet.

Wenn Sie mehr erfahren möchten, besuchen Sie praktische Anwendungen für bitweise Operationen.

Die in C # verfügbaren bitweisen und Bitverschiebungsoperatoren sind unten aufgeführt.

Liste der bitweisen C # -Operatoren
Operator Name des Bedieners
~ Bitweise Ergänzung
& Bitweises UND
| Bitweises ODER
^ Bitweises exklusives ODER (XOR)
<< Bitweise Linksverschiebung
>> Bitweise Rechtsverschiebung

Bitweises ODER

Der bitweise ODER-Operator wird durch dargestellt |. Es führt eine bitweise ODER-Verknüpfung der entsprechenden Bits zweier Operanden durch. Wenn eines der Bits ist 1, ist das Ergebnis 1. Ansonsten ist das Ergebnis 0.

Wenn die Operanden vom Typ sind bool, entspricht die bitweise ODER-Verknüpfung der logischen ODER-Verknüpfung zwischen ihnen.

Beispielsweise,

 14 = 00001110 (binär) 11 = 00001011 (binär)

Bitweise OROperation zwischen 14 und 11:

 00001110 00001011 -------- 00001111 = 15 (dezimal)

Beispiel 1: Bitweises ODER

 using System; namespace Operator ( class BitWiseOR ( public static void Main(string() args) ( int firstNumber = 14, secondNumber = 11, result; result = firstNumber | secondNumber; Console.WriteLine("(0) | (1) = (2)", firstNumber, secondNumber, result); ) ) ) 

Wenn wir das Programm ausführen, lautet die Ausgabe:

14 | 11 = 15

Bitweises UND

Der bitweise AND-Operator wird durch dargestellt &. Es führt eine bitweise UND-Operation an den entsprechenden Bits zweier Operanden durch. Wenn eines der Bits ist 0, ist das Ergebnis 0. Ansonsten ist das Ergebnis 1.

Wenn die Operanden vom Typ sind bool, entspricht die bitweise UND-Verknüpfung der logischen UND-Verknüpfung zwischen ihnen.

Beispielsweise,

 14 = 00001110 (binär) 11 = 00001011 (binär)

Bitweise UND-Verknüpfung zwischen 14 und 11:

 00001110 00001011 -------- 00001010 = 10 (in Dezimalzahl)

Beispiel 2: Bitweises UND

 using System; namespace Operator ( class BitWiseAND ( public static void Main(string() args) ( int firstNumber = 14, secondNumber = 11, result; result = firstNumber & secondNumber; Console.WriteLine("(0) & (1) = (2)", firstNumber, secondNumber, result); ) ) ) 

Wenn wir das Programm ausführen, lautet die Ausgabe:

 14 & 11 = 10

Bitweises XOR

Der bitweise XOR-Operator wird durch dargestellt ^. Es führt eine bitweise XOR-Operation an den entsprechenden Bits zweier Operanden durch. Wenn die entsprechenden Bits sind elbe , ist das Ergebnis 0. Wenn die entsprechenden Bits unterschiedlich sind , ist das Ergebnis 1.

Wenn die Operanden vom Typ sind bool, entspricht die bitweise XOR-Operation der logischen XOR-Operation zwischen ihnen.

Beispielsweise,

 14 = 00001110 (binär) 11 = 00001011 (binär)

Bitweise XOR-Operation zwischen 14 und 11:

 00001110 00001011 -------- 00000101 = 5 (dezimal)

Wenn Sie mehr über die Verwendung von Bitwise XOR erfahren möchten, besuchen Sie The Magic of XOR

Beispiel 3: Bitweises XOR

 using System; namespace Operator ( class BitWiseXOR ( public static void Main(string() args) ( int firstNumber = 14, secondNumber = 11, result; result = firstNumber^secondNumber; Console.WriteLine("(0) (1) = (2)", firstNumber, secondNumber, result); ) ) ) 

Wenn wir das Programm ausführen, lautet die Ausgabe:

 14 11 = 5

Bitweise Ergänzung

Der bitweise Komplementoperator wird durch dargestellt ~. Es ist ein unärer Operator, dh er arbeitet nur mit einem Operanden. Der ~Operator invertiert jedes Bit, dh ändert 1 zu 0 und 0 zu 1.

Beispielsweise,

 26 = 00011010 (binär)

Bitweise Komplementoperation am 26:

 ~ 00011010 = 11100101 = 229 (in Dezimalzahl)

Beispiel 4: Bitweise Ergänzung

 using System; namespace Operator ( class BitWiseComplement ( public static void Main(string() args) ( int number = 26, result; result = ~number; Console.WriteLine("~(0) = (1)", number, result); ) ) ) 

Wenn wir das Programm ausführen, lautet die Ausgabe:

 ~ 26 = -27

Wir haben - 27als Ausgabe, als wir erwartet hatten 229. Warum ist das passiert?

Es passiert, weil der Binärwert, 11100101den wir erwarten, 229tatsächlich eine 2er-Komplementdarstellung von ist -27. Negative Zahlen im Computer werden in der 2er-Komplementdarstellung dargestellt.

Für jede ganze Zahl n, 2-Komplement von nwird -(n+1).

2's Ergänzung
Dezimal Binär 2's Komplement
0 00000000 - (11111111 + 1) = -00000000 = -0 (in Dezimalzahl)
1 00000001 - (11111110 + 1) = -11111111 = -256 (in Dezimalzahl)
229 11100101 - (00011010 + 1) = -00011011 = -27

Überlaufwerte werden im 2er-Komplement ignoriert.

Das bitweise Komplement von 26ist 229 (dezimal) und das 2er-Komplement von 229ist -27. Daher ist die Ausgabe -27anstelle von 229.

Bitweise Linksverschiebung

Der bitweise Linksverschiebungsoperator wird durch dargestellt <<. Der <<Bediener verschiebt eine Zahl um eine bestimmte Anzahl von Bits nach links. Nullen werden zu den niedrigstwertigen Bits hinzugefügt.

In Dezimalzahlen entspricht dies

 num * 2bits

Beispielsweise,

 42 = 101010 (binär)

Bitwise Lift Shift-Vorgang bei 42:

 42 << 1 = 84 (In Binär 1010100) 42 << 2 = 168 (In Binär 10101000) 42 << 4 = 672 (In Binär 1010100000)

Beispiel 5: Bitweise Linksverschiebung

 using System; namespace Operator ( class LeftShift ( public static void Main(string() args) ( int number = 42; Console.WriteLine("(0)<<1 = (1)", number, number<<1); Console.WriteLine("(0)<<2 = (1)", number, number<<2); Console.WriteLine("(0)<<4 = (1)", number, number<<4); ) ) ) 

Wenn wir das Programm ausführen, lautet die Ausgabe:

 42 << 1 = 84 42 << 2 = 168 42 << 4 = 672

Bitweise Rechtsverschiebung

Der bitweise Linksverschiebungsoperator wird durch dargestellt >>. Der >>Operator verschiebt eine Zahl um eine bestimmte Anzahl von Bits nach rechts. Der erste Operand wird um die vom zweiten Operanden angegebene Anzahl von Bits nach rechts verschoben.

In Dezimalzahlen entspricht dies

 Boden (Anzahl / 2 Bit)

Beispielsweise,

 42 = 101010 (binär)

Bitwise Lift Shift-Vorgang bei 42:

 42 >> 1 = 21 (In Binär 010101) 42 >> 2 = 10 (In Binär 001010) 42 >> 4 = 2 (In Binär 000010)

Beispiel 6: Bitweise Rechtsverschiebung

 using System; namespace Operator ( class LeftShift ( public static void Main(string() args) ( int number = 42; Console.WriteLine("(0)>>1 = (1)", number, number>>1); Console.WriteLine("(0)>>2 = (1)", number, number>>2); Console.WriteLine("(0)>>4 = (1)", number, number>>4); ) ) ) 

Wenn wir das Programm ausführen, lautet die Ausgabe:

 42 >> 1 = 21 42 >> 2 = 10 42 >> 4 = 2

Interessante Beiträge...