Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

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.

Lista de operadores bit a bit de C#
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) .

Complemento a 2
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

  1. Identificadores y palabras clave de C#
  2. Operadores de C#
  3. Operadores C# Bitwise y Bit Shift
  4. Operadores de C++
  5. Operadores de programación en C
  6. Operadores de Python
  7. Operadores Java
  8. IoT y blockchain:un cambio de paradigma
  9. Operadores en C++ con Ejemplo:Qué es, Tipos y Programas
  10. Operadores bit a bit en C:AND, OR, XOR, Shift y Complement
  11. Operadores de Python:Aritmética, Lógica, Comparación, Asignación, Bit a Bit y Precedencia