C# Bitwise- und Bit-Shift-Operatoren
Bitweise und Bitverschiebungsoperatoren in C#
In diesem Tutorial lernen wir ausführlich bitweise Operatoren und Bitverschiebungsoperatoren in C# kennen. C# bietet 4 bitweise und 2-Bit-Shift-Operatoren.
Bitweise und Bitverschiebungsoperatoren werden verwendet, um Operationen auf Bitebene mit Integer- (int, long usw.) und booleschen Daten durchzuführen. Diese Operatoren werden im wirklichen Leben nicht häufig verwendet.
Wenn Sie daran interessiert sind, mehr zu erfahren, besuchen Sie praktische Anwendungen von bitweisen Operationen.
Die in C# verfügbaren bitweisen und bitverschiebenden Operatoren sind unten aufgeführt.
Operator | Operatorname |
---|---|
~ | Bitweise Ergänzung |
& | Bitweises UND |
| | Bitweises ODER |
^ | Bitweises exklusives ODER (XOR) |
<< | Bitweise Verschiebung nach links |
>> | Bitweise Rechtsverschiebung |
Bitweises ODER
Der bitweise ODER-Operator wird durch |
dargestellt . Es führt eine bitweise ODER-Operation an den entsprechenden Bits von zwei Operanden durch. Wenn eines der Bits 1
ist , ist das Ergebnis 1
. Andernfalls ist das Ergebnis 0
.
Wenn die Operanden vom Typ bool
sind , entspricht die bitweise OR-Operation der logischen OR-Operation zwischen ihnen.
Zum Beispiel
14 = 00001110 (In Binary) 11 = 00001011 (In Binary)
Bitweise OR
Betrieb zwischen 14 und 11 Uhr:
00001110 00001011 -------- 00001111 = 15 (In Decimal)
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 UND-Operator wird durch &
dargestellt . Es führt eine bitweise UND-Operation an den entsprechenden Bits von zwei Operanden durch. Wenn eines der Bits 0
ist , ist das Ergebnis 0
. Andernfalls ist das Ergebnis 1
.
Wenn die Operanden vom Typ bool
sind , entspricht die bitweise UND-Operation der logischen UND-Operation zwischen ihnen.
Zum Beispiel
14 = 00001110 (In Binary) 11 = 00001011 (In Binary)
Bitweise UND-Verknüpfung zwischen 14 und 11:
00001110 00001011 -------- 00001010 = 10 (In Decimal)
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 von zwei Operanden durch. Wenn die entsprechenden Bits gleich sind , ist das Ergebnis 0
. Wenn die entsprechenden Bits verschieden sind , ist das Ergebnis 1
.
Wenn die Operanden vom Typ bool
sind , entspricht die bitweise XOR-Operation der logischen XOR-Operation zwischen ihnen.
Zum Beispiel
14 = 00001110 (In Binary) 11 = 00001011 (In Binary)
Bitweise XOR-Operation zwischen 14 und 11:
00001110 00001011 -------- 00000101 = 5 (In Decimal)
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, d. h. er arbeitet nur mit einem Operanden. Die ~
Operator invertiert jedes Bit, d.h. ändert 1 zu 0 und 0 zu 1.
Zum Beispiel
26 = 00011010 (In Binary)
Bitweise Komplementoperation auf 26:
~ 00011010 = 11100101 = 229 (In Decimal)
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 229
erwarteten . Warum ist das passiert?
Es passiert, weil der binäre Wert 11100101
was wir als 229
erwarten ist eigentlich eine Zweierkomplementdarstellung von -27
. Negative Zahlen im Computer werden im Zweierkomplement dargestellt.
Für jede ganze Zahl n das Zweierkomplement von n
wird -(n+1)
sein .
Dezimalzahl | Binär | 2er-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 Zweierkomplement ignoriert.
Das bitweise Komplement von 26
ist 229 (dezimal) und das Zweierkomplement von 229
ist -27
. Daher ist die Ausgabe -27
statt 229
.
Bitweise Linksverschiebung
Der bitweise Linksverschiebungsoperator wird durch <<
dargestellt . Der <<
Operator verschiebt eine Zahl um eine angegebene Anzahl von Bits nach links. Den niederwertigsten Bits werden Nullen hinzugefügt.
In Dezimalform ist es äquivalent zu
num * 2bits
Zum Beispiel
42 = 101010 (In Binary)
Bitweise Lift-Shift-Operation auf 42:
42 << 1 = 84 (In binary 1010100) 42 << 2 = 168 (In binary 10101000) 42 << 4 = 672 (In binary 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 . Die >>
Operator verschiebt eine Zahl um eine bestimmte Anzahl von Bits nach rechts. Der erste Operand wird um die durch den zweiten Operanden angegebene Anzahl von Bits nach rechts verschoben.
In Dezimalform ist es äquivalent zu
floor(num / 2bits)
Zum Beispiel
42 = 101010 (In Binary)
Bitweise Lift-Shift-Operation auf 42:
42 >> 1 = 21 (In binary 010101) 42 >> 2 = 10 (In binary 001010) 42 >> 4 = 2 (In binary 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
C Sprache
- C#-Schlüsselwörter und Bezeichner
- C#-Operatoren
- C# Bitwise- und Bit-Shift-Operatoren
- C++-Operatoren
- C-Programmieroperatoren
- Python-Operatoren
- Java-Operatoren
- IoT und Blockchain – Ein Paradigmenwechsel
- Operatoren in C++ mit Beispiel:Was ist, Typen und Programme
- Bitweise Operatoren in C:AND, OR, XOR, Shift &Complement