logo

Operadores bit a bit en Java


Operadores constituyen el componente básico de cualquier lenguaje de programación. Java también proporciona muchos tipos de operadores que se pueden utilizar según la necesidad de realizar diversos cálculos y funciones, ya sean lógicos, aritméticos, relacionales, etc. Se clasifican según la funcionalidad que proporcionan. Aquí hay algunos tipos:

  1. Operadores aritméticos
  2. Operadores unarios
  3. Operador de asignación
  4. Operadores relacionales
  5. Operadores logicos
  6. Operador ternario
  7. Operadores bit a bit
  8. Operadores de turno

Este artículo explica todo lo que uno necesita saber sobre los operadores bit a bit.

bucle for en script de shell

Operadores bit a bit

Los operadores bit a bit están acostumbrados a realizar la manipulación de bits individuales de un número. Se pueden utilizar con cualquier tipo integral (char, short, int, etc.). Se utilizan al realizar operaciones de actualización y consulta de los árboles indexados binarios.



Ahora veamos cada uno de los operadores bit a bit en Java:

1. Bit a bit O (|)

Este operador es un operador binario, indicado por '|'. Devuelve bit a bit O de los valores de entrada, es decir, si cualquiera de los bits es 1, da 1; de lo contrario, muestra 0.

Ejemplo:

a = 5 = 0101 (In Binary) b = 7 = 0111 (In Binary)  Bitwise OR Operation of 5 and 7  0101 | 0111  ________  0111 = 7 (In decimal)>

2. Bit a bit Y (&)

Este operador es un operador binario, indicado por '&'. Devuelve bit a bit Y de los valores de entrada, es decir, si ambos bits son 1, da 1; de lo contrario, muestra 0.

Ejemplo:

a = 5 = 0101 (In Binary) b = 7 = 0111 (In Binary)  Bitwise AND Operation of 5 and 7  0101 & 0111  ________  0101 = 5 (In decimal)>

3. XOR bit a bit (^)

Este operador es un operador binario, indicado por '^'. Devuelve bit a bit XOR de los valores de entrada, es decir, si los bits correspondientes son diferentes, da 1; de lo contrario, muestra 0.

Ejemplo:

a = 5 = 0101 (In Binary) b = 7 = 0111 (In Binary)  Bitwise XOR Operation of 5 and 7  0101 ^ 0111  ________  0010 = 2 (In decimal)>

4. Complemento bit a bit (~)

Este operador es un operador unario, denotado por '~'. Devuelve la representación en complemento a uno del valor de entrada, es decir, con todos los bits invertidos, lo que significa que hace que cada 0 sea 1 y cada 1 sea 0.

Ejemplo:

a = 5 = 0101 (In Binary)  Bitwise Complement Operation of 5  ~ 0101  ________  1010 = 10 (In decimal)>

Nota: El compilador dará el complemento a 2 de ese número, es decir, el complemento a 2 de 10 será -6.

Java
// Java program to illustrate // bitwise operators public class operators {  public static void main(String[] args)   b));  // bitwise xor  // 0101 ^ 0111=0010 = 2  System.out.println('a^b = ' + (a ^ b));  // bitwise not  // ~00000000 00000000 00000000 00000101=11111111 11111111 11111111 11111010  // will give 2's complement (32 bit) of 5 = -6  System.out.println('~a = ' + ~a);  // can also be combined with  // assignment operator to provide shorthand  // assignment  // a=a&b  a &= b;  System.out.println('a= ' + a);   }>

Producción
a&b = 5 a|b = 7 a^b = 2 ~a = -6 a= 5>

Espacio auxiliar:O(1)

Complejidad del tiempo:O(1)

Java
// Demonstrating the bitwise logical operators class GFG {  public static void main (String[] args) {    String binary[]={  '0000','0001','0010','0011','0100','0101',  '0110','0111','1000','1001','1010',  '1011','1100','1101','1110','1111'  };    // initializing the values of a and b   int a=3; // 0+2+1 or 0011 in binary  int b=6; // 4+2+0 or 0110 in binary    // bitwise or  int c= a | b;    // bitwise and  int d= a & b;    // bitwise xor  int e= a ^ b;    // bitwise not  int f= (~a & b)|(a &~b);  int g= ~a & 0x0f;      System.out.println(' a= '+binary[a]);  System.out.println(' b= '+binary[b]);  System.out.println(' a|b= '+binary[c]);  System.out.println(' a&b= '+binary[d]);  System.out.println(' a^b= '+binary[e]);  System.out.println('~a & b|a&~b= '+binary[f]);  System.out.println('~a= '+binary[g]);  } }>

Producción
 a= 0011 b= 0110 a|b= 0111 a&b= 0010 a^b= 0101 ~a & b|a&~b= 0101 ~a= 1100>

Operadores de desplazamiento de bits (operadores de desplazamiento)

Los operadores de desplazamiento se utilizan para desplazar los bits de un número hacia la izquierda o hacia la derecha, multiplicando o dividiendo así el número por dos, respectivamente. Se pueden utilizar cuando tenemos que multiplicar o dividir un número por dos.

Sintaxis:

 number   shift_op   number_of_places_to_shift;>

Tipos de operadores de turnos:

Los operadores de turnos se dividen a su vez en 4 tipos. Estos son:

  1. Operador de desplazamiento a la derecha firmado (>>)
  2. Operador de desplazamiento a la derecha sin firmar (>>>)
  3. Operador de desplazamiento a la izquierda (<<)
  4. Operador de desplazamiento a la izquierda sin firmar (<<<)

Nota: Para obtener más detalles sobre los operadores de turnos en Java, consulte Operador de turnos en Java .

programa para implementar todos los operadores Bitwise en Java para la entrada del usuario

Java
import java.util.Scanner; public class BitwiseOperators {  public static void main(String[] args)   Scanner input = new Scanner(System.in);  System.out.print('Enter first number: ');  int num1 = input.nextInt();  System.out.print('Enter second number: ');  int num2 = input.nextInt();  System.out.println('Bitwise AND: ' + (num1 & num2));  System.out.println('Bitwise OR: ' + (num1  }>

Aporte

Enter first number: 4 Enter second number: 8>

Producción

Bitwise AND: 0 Bitwise OR: 12 Bitwise XOR: 12 Bitwise NOT: -5 Bitwise Left Shift: 16 Bitwise Right Shift: 1 Bitwise Unsigned Right Shift: 1>

Explicación

Este programa solicita al usuario que ingrese dos números, num1 y num2. Luego realiza las siguientes operaciones bit a bit utilizando los operadores &, |, ^, ~, <> y>>>:

Bit a bit Y
O bit a bit
XOR bit a bit
Bit a bit NO
Desplazamiento bit a izquierda
Desplazamiento bit a derecha
Desplazamiento a la derecha de relleno cero bit a bit

Ventajas

Las ventajas de utilizar operadores bit a bit en Java son:

  1. Velocidad: Las operaciones bit a bit son mucho más rápidas que las operaciones aritméticas, ya que operan directamente sobre representaciones binarias de números.
  2. Optimización del espacio: Las operaciones bit a bit se pueden utilizar para almacenar múltiples valores en una sola variable, lo que puede resultar útil cuando se trabaja con memoria limitada.
  3. Manipulación de bits: Los operadores bit a bit permiten un control preciso sobre los bits individuales de un número, lo que puede resultar útil en diversas aplicaciones como criptografía, detección de errores y compresión.
  4. Simplificación de código : Las operaciones bit a bit pueden simplificar el código al reducir la cantidad de declaraciones condicionales y bucles necesarios para realizar determinadas tareas.

En resumen, los operadores bit a bit son una herramienta importante para optimizar el rendimiento, mejorar la legibilidad del código y reducir la complejidad del código en aplicaciones Java.