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 # -OperatorenOperator | 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 OR
Operation 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 - 27
als Ausgabe, als wir erwartet hatten 229
. Warum ist das passiert?
Es passiert, weil der Binärwert, 11100101
den wir erwarten, 229
tatsä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 n
wird -(n+1)
.
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 26
ist 229 (dezimal) und das 2er-Komplement von 229
ist -27
. Daher ist die Ausgabe -27
anstelle 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