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.
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)>
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.