Introducción a la manipulación de bits

Por lo general, un programador trabaja en variables de tipos de datos como int, float, double, String o colecciones como Array, List, ArrayList, etc. En algunos casos, los programadores necesitan profundizar mucho más en los datos en el byte y en el nivel de bits para extraer y manipular los datos. Lenguajes como Java y C # le permiten manipular datos a nivel de bit, lo que significa que tiene acceso a un bit específico en un byte. En este tema, vamos a aprender sobre la manipulación de bits en Java.

La manipulación de bits a menudo se requiere cuando se trabaja en compresión de datos y encriptación de datos, donde el programador necesita extraer datos a nivel de bits para codificar, decodificar o comprimir los datos originales. Hay muchas otras aplicaciones de manipulación de Bit que veremos más adelante en este artículo.

Java admite operadores de 3 bits y 4 bits para realizar operaciones a nivel de bit. Estos operadores se pueden usar en tipos integrales (int, short, long y byte) para realizar operaciones a nivel de bit.

Operadores Java Bitwise y Bitshift

OperadorDescripción
YBitwise Y
El |Bitwise O
~Complemento bit a bit
<<Shift izquierdo
>>Giro a la derecha
^Bitwise XOR
>>>Desplazamiento a la derecha sin signo

Operadores de manipulación de bits en Java

echemos un vistazo a los operadores con más detalle

1) Bitwise O

Este es un operador binario que toma 2 operandos y se denota con el símbolo "| ". El operador bit a bit compara los bits correspondientes de los dos operandos. Si alguno de los bits del operando es 1, la salida es 1, de lo contrario será 0.

Ejemplo

15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise OR Operation of 15 and 27
00001111
| 00011011
________
00011111 = 31 (In decimal)

Programa Java

class BitwiseOR (
public static void main(String() args) (
int operand1 = 15, operand2 = 27, output
output= operand1 | operand2;
System.out.println(output);
)
)

Salida: 31

2) Bitwise Y

Este también es un operador bit a bit que toma 2 operandos y se denota con el símbolo "&". El operador bit a bit compara los bits correspondientes de los dos operandos. Si ambos bits de operando son 1, la salida es 1, de lo contrario 0.

Ejemplo

15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise AND Operation of 15 and 27
00001111
| 00011011
________
00001011 = 11 (In decimal)

Programa Java

class BitwiseAND (
public static void main(String() args) (
int operand1 = 15, operand2 = 27, output
output= operand1 & operand2;
System.out.println(output);
)
)

Salida: 11

3) Complemento bit a bit

A diferencia de los otros dos operadores que hemos discutido hasta ahora, esto toma solo un operando y se denota con el símbolo "~". Este operador invierte el bit del operando. Si el bit del operando es 0, lo convierte en 1 y viceversa.

Ejemplo

15 = 00001111 (In Binary)
Bitwise complement Operation of 15
~ 00001111
________
11110000 = 240 (In decimal)

Programa Java

class BitwiseComplement (
public static void main(String() args) (
int operand= 15, output;
output= ~operand;
System.out.println(output);
)
)

Salida: -16

Nota: cuando ejecuta el programa Java obtendrá -16 como salida en lugar de 240 porque el compilador muestra el complemento de 2 de ese número, es decir, la noción negativa del número binario.

El complemento a 2 de cualquier número es equivalente a - (n + 1) donde n es el número cuyo complemento a 2 debe calcularse. En nuestro caso, el complemento de 2 del operando 15 es -16, que también es la salida del programa.

4) Bitwise XOR

Bitwise XOR es un operador binario que toma 2 operandos y se denota con un símbolo "^". Este operador compara los bits correspondientes de los dos operandos. Si los bits correspondientes de los dos operandos son diferentes, da 1 como salida más 0.

El operador XOR de Bitwise es equivalente a (Bitwise OR + Complemento de Bitwise)

Ejemplo

15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise XOR Operation of 15 and 27
00001111
00011011
________
00010100 = 20 (In decimal)

Programa Java

class BitwiseXor (
public static void main(String() args) (
int operand1= 15, operand2 = 27, output;
output = operand1 operand2;
System.out.println(output);
)
)

Salida: 20

5) Firmado desplazamiento a la izquierda

El operador bit a la izquierda desplaza el patrón de bits a la izquierda un cierto número de veces especificado en el operando. El operador de desplazamiento a la izquierda se denota con el símbolo "<<".

Ejemplo

123 (In binary: 01111011)
123 << 1 evaluates to 246 (In binary: 011110110)
123 << 2 evaluates to 492 (In binary: 0111101100)
123 << 3 evaluates to 984 (In binary:01111011000)

Programa Java

class LeftShiftOperator (
public static void main(String() args) (
int operand = 123;
System.out.println(operand << 1);
System.out.println(operand << 2);
System.out.println(operand << 3);
)
)

salida: 246, 492, 984

6) Firmado desplazamiento a la derecha

El operador de desplazamiento a la derecha firmado funciona exactamente igual que el operador de desplazamiento a la izquierda solo que agrega que los bits cero se desplazan a la posición de orden superior.

Ejemplo

123 (In binary: 01111011)
123 >> 1 evaluates to 61 (In binary: 00111101)
123 >> 2 evaluates to 30 (In binary: 00011110)
123 >> 3 evaluates to 15 (In binary:00001111)

Programa Java

class RightShiftOperator (
public static void main(String() args) (
int operand = 123;
System.out.println(operand >> 1);
System.out.println(operand >> 2);
System.out.println(operand >> 3);
)
)

Salida: 61, 30, 15

7) Desplazamiento a la derecha sin signo

El operador de desplazamiento a la derecha desplaza cero a la posición más a la izquierda por la cantidad de bits especificada en el operando.

Programa Java

class UnSignedRightShiftOperator (
public static void main(String() args) (
int operand = 123;
System.out.println(operand >>> 1);
System.out.println(operand >>> 2);
System.out.println(operand >>> 3);
)
)

Salida : 61, 30, 15

Conclusión: manipulación de bits en Java

Ahora que hemos llegado al final del artículo, terminemos resumiendo el punto clave que hemos discutido en este artículo. Hemos visto qué es un poco de manipulación y sus diferentes casos de uso. También hemos aprendido los diferentes tipos de operadores bit a bit (Bitwise AND, Bitwise OR, Bitwise Complement y Bitwise XOR) y operadores de desplazamiento de bits (operador de desplazamiento a la izquierda firmado, operador de desplazamiento a la derecha firmado y operadores de desplazamiento a la derecha sin signo) junto con un ejemplo y una muestra Programa Java que explica operadores individuales.

Artículos recomendados

Esta es una guía para la manipulación de bits en Java. Aquí discutimos los Operadores Java Bitwise y Bitshift en detalle con ejemplos y programas Java y su salida. También puede consultar el siguiente artículo para obtener más información:

  1. ¿Qué es la interfaz Java?
  2. Herramientas Java
  3. Marcos de Python
  4. Operadores booleanos en Java