Operadores C# Bitwise y Bit Shift
Operadores C# Bitwise y Bit Shift
En este tutorial, aprenderemos en detalle sobre los operadores bit a bit y bit shift en C#. C# proporciona 4 operadores bit a bit y 2 bit shift.
Los operadores bit a bit y de cambio de bit se utilizan para realizar operaciones de nivel de bit en datos enteros (int, long, etc.) y booleanos. Estos operadores no se usan comúnmente en situaciones de la vida real.
Si está interesado en explorar más, visite aplicaciones prácticas de operaciones bit a bit.
Los operadores bit a bit y bit shift disponibles en C# se enumeran a continuación.
Operador | Nombre del operador |
---|---|
~ | Complemento bit a bit |
& | Bitbit Y |
| | Bitbit O |
^ | OR exclusivo bit a bit (XOR) |
< | Desplazamiento a la izquierda bit a bit |
>> | Desplazamiento a la derecha bit a bit |
Bitbit O
El operador OR bit a bit está representado por |
. Realiza la operación OR bit a bit en los bits correspondientes de dos operandos. Si alguno de los bits es 1
, el resultado es 1
. De lo contrario, el resultado es 0
.
Si los operandos son de tipo bool
, la operación OR bit a bit es equivalente a la operación OR lógica entre ellos.
Por ejemplo,
14 = 00001110 (In Binary) 11 = 00001011 (In Binary)
Bit a bit OR
operación entre 14 y 11:
00001110 00001011 -------- 00001111 = 15 (In Decimal)
Ejemplo 1:bit a bit O
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);
}
}
}
Cuando ejecutamos el programa, la salida será:
14 | 11 = 15
Bitbit Y
El operador AND bit a bit está representado por &
. Realiza una operación AND bit a bit en los bits correspondientes de dos operandos. Si alguno de los bits es 0
, el resultado es 0
. De lo contrario, el resultado es 1
.
Si los operandos son de tipo bool
, la operación AND bit a bit es equivalente a la operación AND lógica entre ellos.
Por ejemplo,
14 = 00001110 (In Binary) 11 = 00001011 (In Binary)
Operación AND bit a bit entre 14 y 11:
00001110 00001011 -------- 00001010 = 10 (In Decimal)
Ejemplo 2:Y bit a bit
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);
}
}
}
Cuando ejecutamos el programa, la salida será:
14 & 11 = 10
XOR bit a bit
El operador XOR bit a bit está representado por ^
. Realiza una operación XOR bit a bit en los bits correspondientes de dos operandos. Si los bits correspondientes son iguales , el resultado es 0
. Si los bits correspondientes son diferentes , el resultado es 1
.
Si los operandos son de tipo bool
, la operación XOR bit a bit es equivalente a la operación XOR lógica entre ellos.
Por ejemplo,
14 = 00001110 (In Binary) 11 = 00001011 (In Binary)
Operación XOR bit a bit entre 14 y 11:
00001110 00001011 -------- 00000101 = 5 (In Decimal)
Si desea obtener más información sobre el uso de Bitwise XOR, visite La magia de XOR
Ejemplo 3:XOR bit a bit
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);
}
}
}
Cuando ejecutamos el programa, la salida será:
14 ^ 11 = 5
Complemento bit a bit
El operador Bitwise Complement está representado por ~
. Es un operador unario, es decir, opera en un solo operando. El ~
operador invierte cada bit, es decir, cambia de 1 a 0 y de 0 a 1.
Por ejemplo,
26 = 00011010 (In Binary)
Operación de complemento bit a bit en 26:
~ 00011010 = 11100101 = 229 (In Decimal)
Ejemplo 4:Complemento bit a bit
using System;
namespace Operator
{
class BitWiseComplement
{
public static void Main(string[] args)
{
int number = 26, result;
result = ~number;
Console.WriteLine("~{0} = {1}", number, result);
}
}
}
Cuando ejecutamos el programa, la salida será:
~26 = -27
Tenemos -27
como salida cuando esperábamos 229
. ¿Por qué sucedió esto?
Sucede porque el valor binario 11100101
que esperamos que sea 229
es en realidad una representación en complemento a 2 de -27
. Los números negativos en la computadora se representan en la representación del complemento a 2.
Para cualquier entero n, complemento a 2 de n
será -(n+1)
.
Decimal | Binario | Complemento a 2 |
---|---|---|
0 | 00000000 | -(11111111 + 1) =-00000000 =-0 (En decimal) |
1 | 00000001 | -(11111110 + 1) =-11111111 =-256 (En decimal) |
229 | 11100101 | -(00011010 + 1) =-00011011 =-27 |
Los valores de desbordamiento se ignoran en complemento a 2.
El complemento bit a bit de 26
es 229 (en decimal) y el complemento a 2 de 229
es -27
. Por lo tanto, la salida es -27
en lugar de 229
.
Desplazamiento a la izquierda bit a bit
El operador de desplazamiento a la izquierda bit a bit está representado por <<
. El <<
El operador desplaza un número a la izquierda un número específico de bits. Se agregan ceros a los bits menos significativos.
En decimal, es equivalente a
num * 2bits
Por ejemplo,
42 = 101010 (In Binary)
Operación Bitwise Lift Shift en 42:
42 << 1 = 84 (In binary 1010100) 42 << 2 = 168 (In binary 10101000) 42 << 4 = 672 (In binary 1010100000)
Ejemplo 5:Desplazamiento a la izquierda bit a bit
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);
}
}
}
Cuando ejecutamos el programa, la salida será:
42<<1 = 84 42<<2 = 168 42<<4 = 672
Desplazamiento a la derecha bit a bit
El operador de desplazamiento a la izquierda bit a bit está representado por >>
. El >>
El operador desplaza un número a la derecha un número específico de bits. El primer operando se desplaza a la derecha el número de bits especificado por el segundo operando.
En decimal, es equivalente a
floor(num / 2bits)
Por ejemplo,
42 = 101010 (In Binary)
Operación Bitwise Lift Shift en 42:
42 >> 1 = 21 (In binary 010101) 42 >> 2 = 10 (In binary 001010) 42 >> 4 = 2 (In binary 000010)
Ejemplo 6:Desplazamiento a la derecha bit a bit
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);
}
}
}
Cuando ejecutamos el programa, la salida será:
42>>1 = 21 42>>2 = 10 42>>4 = 2
Lenguaje C
- Identificadores y palabras clave de C#
- Operadores de C#
- Operadores C# Bitwise y Bit Shift
- Operadores de C++
- Operadores de programación en C
- Operadores de Python
- Operadores Java
- IoT y blockchain:un cambio de paradigma
- Operadores en C++ con Ejemplo:Qué es, Tipos y Programas
- Operadores bit a bit en C:AND, OR, XOR, Shift y Complement
- Operadores de Python:Aritmética, Lógica, Comparación, Asignación, Bit a Bit y Precedencia