Operaciones de máscara de bits en Java

Zeeshan Afridi 12 octubre 2023
  1. Operaciones de máscara de bits en Java
  2. Operadores bit a bit en Java
Operaciones de máscara de bits en Java

La máscara de bits es la representación binaria de algunos datos. En el enmascaramiento de bits, consideramos cualquier dato como solo algunos dígitos binarios como 0 y 1.

También podemos usar estos dígitos binarios como valores booleanos ya que 1 representa true y 0 representa false.

Operaciones de máscara de bits en Java

Otra definición de enmascaramiento de bits es visualizar un número u otros datos en representación binaria. Algunos bits son set y otros son unset donde set significa true o 1 y unset significa false o 0.

Digamos que tenemos un valor binario 10011. Aquí, los bits 1, 4 y 5 son sets mientras que el 2 y el 3 son unsets.

Entendamos la máscara de bits a través de un ejemplo. Digamos que tenemos un conjunto de cuatro caracteres {w,x,y,z}, y queremos una representación diferente de la cadena de caracteres.

Para crear una máscara de los 4 bits {_ _ _ _}, cada bit nos da la información de si nos referimos a ese carácter o no. Para hacerlo más simple, la combinación binaria 1001 significa w,z, 0000 significa una cadena vacía y 1111 significa w, x, y, z.

Ahora que hemos entendido los bits y el enmascaramiento de bits, es hora de aprender sobre los operadores bit a bit que se usan para manipular bits.

Operadores bit a bit en Java

Los operadores bit a bit de Java se utilizan para realizar la manipulación de bits. Estos operadores se pueden usar en cualquier tipo integral como short, byte, long, char, int, etc.

Tenemos diferentes operadores bit a bit. Cada uno de ellos se utiliza para un propósito diferente.

Estos son los siguientes:

  1. AND bit a bit (&)
  2. Bit a bit O (|)
  3. Complemento bit a bit (~)
  4. XOR bit a bit (^)

Operador bit a bit AND (&) en Java

El operador AND es un operador bit a bit denotado por &. Hace el cálculo bit a bit de dos o más valores y devuelve true si ambos valores son true; en caso contrario, false.

 1(True) & 1(True)  = 1(True)
0(False) & 0(False) = 0(False)
 1(True) & 0(False) = 0(False)
0(False) & 1(True)  = 0(False)

Código de ejemplo:

package articlecodesinjava;
public class ArticleCodesInJava {
  public static void main(String[] args) {
    int a = 3;
    int b = 4;

    // bitwise AND
    // 0011 & 0100=0000 = 0
    System.out.println("a & b = " + (a & b));
  }
}

Producción :

a & b = 0

Operador bit a bit OR (|) en Java

El operador OR también es un operador bit a bit denotado por |, pero es diferente del operador AND (&). Devuelve true si y solo si un único valor es true; en caso contrario, false.

 1(True) | 1(True)  = 1(True)
0(False) | 0(False) = 0(False)
 1(True) | 0(False) = 1(True)
0(False) | 1(True)  = 1(True)

Código de ejemplo:

package articlecodesinjava;
public class ArticleCodesInJava {
  public static void main(String[] args) {
    int a = 3;
    int b = 4;

    // bitwise OR
    // 0011 & 0100=0000 = 7
    System.out.println("a | b = " + (a | b));
  }
}

Producción :

a & b = 7

Operador de complemento bit a bit (~) en Java

El operador de complemento bit a bit (~), también conocido como operador NOT, puede invertir un patrón de bits. Es un operador unario porque se usa con un solo valor.

Supongamos que tenemos un número binario, 10110, y queremos negarlo con el operador de complemento bit a bit (~). Se convierte en 01001.

Ha invertido 0s en 1s y 1s en 0s.

 ~ 1(True) = 0(False)
~ 0(False) = 1(True)

Código de ejemplo:

package articlecodesinjava;
public class ArticleCodesInJava {
  public static void main(String[] args) {
    // Initial values
    int a = 3, b;

    // bitwise complement of a
    // a = 011 where b = ~a, b =100
    b = ~a;
    System.out.println("~a = " + b);
  }
}

Producción :

~a = -4

Operador bit a bit XOR (^) en Java

El operador XOR bit a bit de Java es un operador binario indicado por ^.

Devuelve true si los valores binarios de entrada son diferentes. Sin embargo, si los valores de entrada son los mismos, ya sean 0 o 1, el resultado es false.

 1(True) ^ 1(True)  = 0(False)
0(False) ^ 0(False) = 0(False)
 1(True) ^ 0(False) = 1(True)
0(False) ^ 1(True)  = 1(True)

Código de ejemplo:

package articlecodesinjava;
public class ArticleCodesInJava {
  public static void main(String[] args) {
    // Initial values
    int a = 3;
    int b = 4;

    // bitwise xor
    // 0011 ^ 0100 = 0111 = 7
    System.out.println("a ^ b = " + (a ^ b));
  }
}

Producción :

a ^ b = 7
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn