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:
- Operadores aritméticos
- Operadores unarios
- Operador de asignación
- Operadores relacionales
- Operadores logicos
- Operador ternario
- Operadores bit a bit
- Operadores de turno
Este artículo explica todo lo que uno necesita saber sobre los operadores bit a bit.
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)
JavaNota: El compilador dará el complemento a 2 de ese número, es decir, el complemento a 2 de 10 será -6.
// 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:
- Operador de desplazamiento a la derecha firmado (>>)
- Operador de desplazamiento a la derecha sin firmar (>>>)
- Operador de desplazamiento a la izquierda ( < <)
- 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:
- 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.
- 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.
- 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.
- 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.