Usar máscara de bits en C#

Saad Aslam 12 octubre 2023
Usar máscara de bits en C#

Esta publicación analizará cómo se puede usar la máscara de bits en C#. Lo más importante es que comprenda la idea general detrás de lo que está haciendo, incluso si hay muchos métodos diferentes para realizar esta tarea.

Debe tener en cuenta que trabajará con los bits de la memoria para utilizar la máscara de bits.

Usar máscara de bits en C#

C# tiene una variedad de operadores, la mayoría de los cuales se conocen como operadores bit a bit. Estos operadores realizan operaciones a nivel de bits en la memoria.

Los operadores bit a bit con sus símbolos son los siguientes.

  1. El operador indicado por el signo & es el operador AND.
  2. El operador indicado por el | signo es el operador OR.
  3. El operador indicado por el signo ~ es el operador NOT.
  4. El operador indicado por el signo ^ es el operador XOR.
  5. El operador indicado por el signo << es el operador desplazamiento a la izquierda.
  6. El operador indicado por el signo >> es el operador right shift AND.

El funcionamiento del operador AND es el siguiente.

X  Y  Res
0  0  0
0  1  0
1  0  0
1  1  1

Res es la salida, y X e Y son las posibilidades de entrada.

El funcionamiento del operador OR es el siguiente.

X  Y  Res
0  0  0
0  1  1
1  0  1
1  1  1

Res es la salida, y X e Y son las posibilidades de entrada.

El funcionamiento del operador NOT es el siguiente.

X  Y
1  0
0  1

Y es la salida, y X son las posibilidades de entrada.

El funcionamiento del operador XOR es el siguiente.

X  Y  Res
0  0  0
0  1  1
1  0  1
1  1  0

Res es la salida, y X e Y son las posibilidades de entrada.

El funcionamiento del operador left-shift es el siguiente.

x = 010110011

Si le damos dos desplazamientos a la izquierda, los bits se moverán espacios de 2 bits a la izquierda.

x << 2

Ahora la x será:

x = 011001100

Y en el lado derecho, se agregarán dos nuevos bits 0.

El funcionamiento del operador de turno derecho es el siguiente.

x = 010110011

Si le damos dos desplazamientos a la derecha, los bits se moverán espacios de 2 bits a la izquierda.

x >> 2

Ahora la x será:

x = 000101100

Y en el lado izquierdo, se agregarán dos nuevos bits 0. Ahora, como conocemos el funcionamiento del operador bit a bit, podemos aplicar una máscara de bits a nuestras entradas.

El operador más común utilizado para la máscara de bits es el operador AND; se utiliza para ver qué bits son uno y cuáles son cero porque su salida es uno cuando ambas entradas son 1.

A continuación se muestra el código que evalúa los últimos 4 bits enmascarados.

using System;

namespace HelloWorld {
  class Program {
    static void Main(string[] args) {
      char x = '2';
      int y = 0b00001111;
      int z = x & y;
      Console.WriteLine(z);
    }
  }
}

Para que tenga 1 byte de espacio en la memoria, construimos la variable de tipo char x y la variable de tipo int y.

La versión binaria del valor decimal correspondiente, en el que los últimos cuatro bits son 1, se escribe como 0b00001111.

La línea que dice int z= x&y; calcula el bit a bit y de los bits y guarda el resultado en la variable denominada z. Como la variable z es del tipo de datos int, podemos ver el resultado expresado en forma decimal.

El funcionamiento es el siguiente.

x = 01111101

    y = 00001111

    z = x& y = 00001101

Debido a que esto es visible, sabemos que la variable x fue despojada de todo excepto de sus cuatro bits más recientes. Para hacerlo, empleamos el operador AND.

Del mismo modo, podemos combinar los bits usando el operador OR.

Ahora debería poder ver que si tiene un conocimiento sólido de los bits, ahora es sencillo jugar con ellos y generar sus cifrados.

Autor: Saad Aslam
Saad Aslam avatar Saad Aslam avatar

I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.

LinkedIn