C# Bitweise und Bit-Shift-Operatoren meistern: Umfassender Leitfaden
C# Bitweise und Bit-Shift-Operatoren
In diesem Tutorial lernen Sie detailliert die bitweisen und Bit-Shift-Operatoren in C# kennen. C# stellt 4 bitweise und 2 Bit-Shift-Operatoren bereit.
Bitweise und Bit-Shift-Operatoren werden verwendet, um Operationen auf Bit-Ebene bei Ganzzahlen (int, long, usw.) und booleschen Daten durchzuführen. Diese Operatoren kommen in alltäglichen Situationen seltener vor.
Wenn Sie mehr über praktische Anwendungen erfahren möchten, besuchen Sie praktische Anwendungen bitweiser Operationen.
Die in C# verfügbaren bitweisen und Bit-Shift-Operatoren sind unten aufgeführt.
| Operator | Operatorname |
|---|---|
| ~ | Bitweises Komplement |
| & | Bitweises UND |
| | | Bitweises ODER |
| ^ | Bitweises Exklusiv-ODER (XOR) |
| << | Bitweiser Links-Shift |
| >> | Bitweiser Rechts-Shift |
Bitweises ODER
Der bitweise ODER-Operator wird durch | dargestellt. Er führt eine bitweise ODER-Operation auf den entsprechenden Bits zweier Operanden durch. Wenn eines der Bits 1 ist, ist das Ergebnis 1. Andernfalls ist das Ergebnis 0.
Sind die Operanden vom Typ bool, entspricht die bitweise ODER-Operation der logischen ODER-Operation zwischen ihnen.
Beispiel:
14 = 00001110 (Im Binärformat) 11 = 00001011 (Im Binärformat)
Bitweise ODER-Operation zwischen 14 und 11:
00001110 00001011 -------- 00001111 = 15 (Im Dezimalformat)
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);
}
}
}
Programmausgabe:
14 | 11 = 15
Bitweises UND
Der bitweise UND-Operator wird durch & dargestellt. Er führt eine bitweise UND-Operation auf den entsprechenden Bits zweier Operanden durch. Wenn eines der Bits 0 ist, ist das Ergebnis 0. Andernfalls ist das Ergebnis 1.
Bei bool-Operanden entspricht die bitweise UND-Operation der logischen UND-Operation.
Beispiel:
14 = 00001110 (Im Binärformat) 11 = 00001011 (Im Binärformat)
Bitweise UND-Operation zwischen 14 und 11:
00001110 00001011 -------- 00001010 = 10 (Im Dezimalformat)
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);
}
}
}
Programmausgabe:
14 & 11 = 10
Bitweises XOR
Der bitweise XOR-Operator wird durch ^ dargestellt. Er führt eine bitweise XOR-Operation auf den entsprechenden Bits zweier Operanden durch. Sind die entsprechenden Bits gleich, ist das Ergebnis 0. Sind sie verschieden, ist das Ergebnis 1.
Bei bool-Operanden entspricht die bitweise XOR-Operation der logischen XOR-Operation.
Beispiel:
14 = 00001110 (Im Binärformat) 11 = 00001011 (Im Binärformat)
Bitweise XOR-Operation zwischen 14 und 11:
00001110 00001011 -------- 00000101 = 5 (Im Dezimalformat)
Mehr über die Verwendung von Bitweisem XOR erfahren Sie unter 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);
}
}
}
Programmausgabe:
14 ^ 11 = 5
Bitweises Komplement
Der bitweise Komplement-Operator wird durch ~ dargestellt. Es ist ein unärer Operator, d.h. er arbeitet nur mit einem Operanden. Der ~ Operator invertiert jedes Bit, d.h. er ändert 1 zu 0 und 0 zu 1.
Beispiel:
26 = 00011010 (Im Binärformat)
Bitweise Komplement-Operation auf 26:
~ 00011010 = 11100101 = 229 (Im Dezimalformat)
Beispiel 4: Bitweises Komplement
using System;
namespace Operator {
class BitWiseComplement {
public static void Main(string[] args) {
int number = 26, result;
result = ~number;
Console.WriteLine("~{0} = {1}", number, result);
}
}
}
Programmausgabe:
~26 = -27
Wir erhielten -27 als Ausgabe, obwohl wir 229 erwarteten. Warum ist das so?
Der binäre Wert 11100101, den wir als 229 erwarten, ist tatsächlich die Zweierkomplement-Darstellung von -27. Negative Zahlen werden in Computern im Zweierkomplement dargestellt.
Für jede ganze Zahl n ist das Zweierkomplement von n gleich -(n+1).
| Dezimal | Binär | Zweierkomplement |
|---|---|---|
| 0 | 00000000 | -(11111111 + 1) = -00000000 = -0 (Dezimal) |
| 1 | 00000001 | -(11111110 + 1) = -11111111 = -256 (Dezimal) |
| 229 | 11100101 | -(00011010 + 1) = -00011011 = -27 |
Überlaufwerte werden im Zweierkomplement ignoriert.
Das bitweise Komplement von 26 ist 229 (dezimal) und das Zweierkomplement von 229 ist -27. Daher ist die Ausgabe -27 statt 229.
Bitweiser Links-Shift
Der bitweise Links-Shift-Operator wird durch << dargestellt. Der << Operator verschiebt eine Zahl um eine angegebene Anzahl von Bits nach links. Nullen werden an den least significant bits hinzugefügt.
Im Dezimalsystem entspricht dies:
num * 2^bits
Beispiel:
42 = 101010 (Im Binärformat)
Bitweiser Links-Shift auf 42:
42 << 1 = 84 (Im Binärformat 1010100) 42 << 2 = 168 (Im Binärformat 10101000) 42 << 4 = 672 (Im Binärformat 1010100000)
Beispiel 5: Bitweiser Links-Shift
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);
}
}
}
Programmausgabe:
42<<1 = 84 42<<2 = 168 42<<4 = 672
Bitweiser Rechts-Shift
Der bitweise Rechts-Shift-Operator wird durch >> dargestellt. Der >> Operator verschiebt eine Zahl um eine angegebene Anzahl von Bits nach rechts. Der erste Operand wird um die Anzahl der Bits verschoben, die der zweite Operand angibt.
Im Dezimalsystem entspricht dies:
floor(num / 2^bits)
Beispiel:
42 = 101010 (Im Binärformat)
Bitweiser Rechts-Shift auf 42:
42 >> 1 = 21 (Im Binärformat 010101) 42 >> 2 = 10 (Im Binärformat 001010) 42 >> 4 = 2 (Im Binärformat 000010)
Beispiel 6: Bitweiser Rechts-Shift
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);
}
}
}
Programmausgabe:
42>>1 = 21 42>>2 = 10 42>>4 = 2
C Sprache
- C# Keywords und Identifiers verstehen: Regeln, Listen und Best Practices
- C# Operatoren – Umfassender Leitfaden zu Operatoren in C#
- C# Bitweise und Bit-Shift-Operatoren meistern: Umfassender Leitfaden
- C++-Operatoren meistern: Ein vollständiger Leitfaden mit praktischen Beispielen
- C Programmierungsoperatoren meistern: Ein umfassender Leitfaden
- Python-Operatoren meistern: Umfassender Leitfaden
- Java Operatoren meistern: Typen, Syntax und praktische Beispiele
- IoT & Blockchain: Paradigmenwechsel bei Datentrust und Effizienz
- C++ Operatoren erklärt: Typen, Beispiele und Beispielprogramme
- Bitweise Operatoren in C meistern: AND, OR, XOR, Shifts & Komplement