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:
- AND bit a bit (
&
) - Bit a bit O (
|
) - Complemento bit a bit (
~
) - 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 is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn