Language: EN

csharp-operadores-bitwise

Bitwise Operators in C#

Bitwise operators allow you to perform operations directly on the bits of the operands. Instead of working with entire integer values, bitwise operators handle each bit of the operands separately.

C# provides several bitwise operators, each with its own specific functionality.

OperatorSymbol
Bitwise AND&
Bitwise OR|
Bitwise XOR^
Bitwise NOT~
Left Shift<<
Right Shift>>

Types of Bitwise Operators in C#

Bitwise AND (&)

The bitwise AND operator performs a logical AND operation between each pair of corresponding bits of two operands. The result is 1 only if both bits are 1; otherwise, the result is 0.

int a = 12; // 1100 in binary
int b = 10; // 1010 in binary
int result = a & b; // 1000 in binary, which is 8 in decimal
Console.WriteLine(result); // Output: 8

Bitwise OR (|)

The bitwise OR operator performs a logical OR operation between each pair of corresponding bits of two operands. The result is 1 if at least one of the bits is 1; otherwise, the result is 0.

int a = 12; // 1100 in binary
int b = 10; // 1010 in binary
int result = a | b; // 1110 in binary, which is 14 in decimal
Console.WriteLine(result); // Output: 14

Bitwise XOR (^)

The bitwise XOR operator performs a logical XOR (exclusive OR) operation between each pair of corresponding bits of two operands. The result is 1 if one and only one of the bits is 1; otherwise, the result is 0.

int a = 12; // 1100 in binary
int b = 10; // 1010 in binary
int result = a ^ b; // 0110 in binary, which is 6 in decimal
Console.WriteLine(result); // Output: 6

Bitwise NOT (~)

The bitwise NOT operator performs a bitwise negation of its operand, inverting each bit of the operand (0s become 1s and 1s become 0s).

int a = 12; // 1100 in binary
int result = ~a; // 0011 in binary, which is -13 in decimal (in two's complement)
Console.WriteLine(result); // Output: -13

Left Shift (<<)

The left shift operator shifts the bits of its operand to the left a specific number of positions, filling the empty bits on the right with zeros.

int a = 3; // 0011 in binary
int result = a << 2; // 1100 in binary, which is 12 in decimal
Console.WriteLine(result); // Output: 12

Right Shift (>>)

The right shift operator shifts the bits of its operand to the right a specific number of positions. The empty bits on the left are filled with the sign bit (for negative numbers) or with zeros (for positive numbers).

int a = 12; // 1100 in binary
int result = a >> 2; // 0011 in binary, which is 3 in decimal
Console.WriteLine(result); // Output: 3