Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Operadores C# Bitwise e Bit Shift

Operadores C# Bitwise e Bit Shift


Neste tutorial, aprenderemos em detalhes sobre os operadores bit a bit e bit shift em C#. C# fornece operadores de deslocamento de 4 bits e 2 bits.

Os operadores bit a bit e bit shift são usados ​​para realizar operações de nível de bit em dados inteiros (int, long, etc) e booleanos. Esses operadores não são comumente usados ​​em situações da vida real.

Se você estiver interessado em explorar mais, visite aplicações práticas de operações bit a bit.

Os operadores bit a bit e bit shift disponíveis em C# estão listados abaixo.
Lista de operadores C# Bitwise
Operador Nome do Operador
~ Complemento bit a bit
& Bit a bit E
| OU bit a bit
^ OR exclusivo bit a bit (XOR)
<< Deslocamento à esquerda bit a bit
>> Deslocamento à direita bit a bit

Bit a bit OU


O operador OR bit a bit é representado por | . Ele executa a operação OR bit a bit nos bits correspondentes de dois operandos. Se um dos bits for 1 , o resultado é 1 . Caso contrário, o resultado é 0 .

Se os operandos forem do tipo bool , a operação OR bit a bit é equivalente à operação OR lógica entre eles.

Por exemplo,
14 = 00001110 (In Binary)
11 = 00001011 (In Binary)

Bit a bit OR funcionamento entre 14 e 11:
00001110
00001011
--------
00001111 = 15 (In Decimal)

Exemplo 1:OU bit a bit

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);
		}
	}
}

Ao executarmos o programa, a saída será:
14 | 11 = 15

Bit a bit E


O operador AND bit a bit é representado por & . Ele executa a operação AND bit a bit nos bits correspondentes de dois operandos. Se um dos bits for 0 , o resultado é 0 . Caso contrário, o resultado é 1 .

Se os operandos forem do tipo bool , a operação AND bit a bit é equivalente à operação AND lógica entre eles.

Por exemplo,
14 = 00001110 (In Binary)
11 = 00001011 (In Binary)

Operação AND bit a bit entre 14 e 11:
00001110
00001011
--------
00001010 = 10 (In Decimal)

Exemplo 2:bit a bit E

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);
		}
	}
}

Ao executarmos o programa, a saída será:
14 & 11 = 10

XOR bit a bit


O operador XOR bit a bit é representado por ^ . Ele executa a operação XOR bit a bit nos bits correspondentes de dois operandos. Se os bits correspondentes forem mesmos , o resultado é 0 . Se os bits correspondentes forem diferentes , o resultado é 1 .

Se os operandos forem do tipo bool , a operação XOR bit a bit é equivalente à operação XOR lógica entre eles.

Por exemplo,
14 = 00001110 (In Binary)
11 = 00001011 (In Binary)

Operação XOR bit a bit entre 14 e 11:
00001110
00001011
--------
00000101 = 5 (In Decimal)

Se você quiser saber mais sobre o uso do Bitwise XOR, visite The Magic of XOR

Exemplo 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);
		}
	}
}

Ao executarmos o programa, a saída será:
14 ^ 11 = 5

Complemento bit a bit




O operador Bitwise Complement é representado por ~ . É um operador unário, ou seja, opera em apenas um operando. O ~ operador inverte cada bit, ou seja, muda de 1 para 0 e de 0 para 1.

Por exemplo,
26 = 00011010 (In Binary)

Operação de complemento bit a bit em 26:
~ 00011010 = 11100101 = 229 (In Decimal)

Exemplo 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);
		}
	}
}

Ao executarmos o programa, a saída será:
~26 = -27

Temos -27 como saída quando esperávamos 229 . Por que isso aconteceu?

Isso acontece porque o valor binário 11100101 que esperamos ser 229 é na verdade uma representação em complemento de 2 de -27 . Números negativos no computador são representados na representação em complemento de 2.

Para qualquer inteiro n, complemento de 2 de n será -(n+1) .
complemento de 2
Decimal Binário Complemento de 2
0 00000000 -(11111111 + 1) =-00000000 =-0 (em decimal)
1 00000001 -(11111110 + 1) =-11111111 =-256 (em decimal)
229 11100101 -(00011010 + 1) =-00011011 =-27

Os valores de estouro são ignorados no complemento de 2.

O complemento bit a bit de 26 é 229 (em decimal) e o complemento de 2 de 229 é -27 . Portanto, a saída é -27 em vez de 229 .

Deslocamento à esquerda bit a bit


O operador de deslocamento à esquerda bit a bit é representado por << . O << operador desloca um número para a esquerda por um número especificado de bits. Zeros são adicionados aos bits menos significativos.

Em decimal, equivale a
num * 2bits

Por exemplo,
42 = 101010 (In Binary)

Operação de mudança de elevação bit a bit em 42:
42 << 1 = 84 (In binary 1010100)
42 << 2 = 168 (In binary 10101000)
42 << 4 = 672 (In binary 1010100000)

Exemplo 5:Deslocamento à esquerda 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);
		}
	}
}

Ao executarmos o programa, a saída será:
42<<1 = 84
42<<2 = 168
42<<4 = 672

Deslocamento à direita bit a bit


O operador de deslocamento à esquerda bit a bit é representado por >> . O >> operador desloca um número para a direita por um número especificado de bits. O primeiro operando é deslocado para a direita pelo número de bits especificado pelo segundo operando.

Em decimal, equivale a
floor(num / 2bits)

Por exemplo,
42 = 101010 (In Binary)

Operação de mudança de elevação bit a bit em 42:
42 >> 1 = 21 (In binary 010101)
42 >> 2 = 10 (In binary 001010)
42 >> 4 = 2 (In binary 000010)

Exemplo 6:Deslocamento à direita 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);
		}
	}
}

Ao executarmos o programa, a saída será:
42>>1 = 21
42>>2 = 10
42>>4 = 2

Linguagem C

  1. Palavras-chave e identificadores C#
  2. Operadores C#
  3. Operadores C# Bitwise e Bit Shift
  4. Operadores C++
  5. Operadores de programação C
  6. Operadores Python
  7. Operadores Java
  8. IoT e blockchain - Uma mudança de paradigma
  9. Operadores em C++ com Exemplo:O que é, Tipos e Programas
  10. Operadores bit a bit em C:AND, OR, XOR, Shift &Complement