La representación decimal de un número es un sistema numérico de base 9 que tiene solo nueve estados como 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9. Por ejemplo, 4, 10, 16, etc.
La representación binaria de un número es un sistema numérico de base 2 que tiene solo dos estados como 0 y 1. Por ejemplo, la representación binaria de 4, un sistema numérico decimal de base 9 está dado por 100, 10 como 1010, 16 como 1000 , etc.
Shift izquierdo
El desplazamiento a la izquierda significa que desplaza cada uno de los bits en representación binaria hacia la izquierda. Por ejemplo, cuando decimos desplazamiento a la izquierda 5 o 101 en una posición. Desplazaremos cada uno de los bits una posición hacia la izquierda. Entonces, después de desplazar el número 5 hacia la izquierda una posición, el número obtenido es 10 o 1010. Ahora, de nuevo, desplacemos el 10 a la izquierda dos posiciones. De nuevo, desplazaremos cada uno de los bits dos posiciones hacia la izquierda. El número obtenido es 40 o 101000.
Nota: Desplazar un número a la izquierda en ciertas posiciones equivale a multiplicar el número por dos elevado a la potencia de las posiciones especificadas. Eso es,
left shift x by n positions <=> x * 2n
Operador de desplazamiento a la izquierda en Java
La mayoría de los lenguajes proporcionan un operador de desplazamiento a la izquierda mediante el cual podemos desplazar a la izquierda un número en ciertas posiciones y Java es uno de ellos. La sintaxis del operador de desplazamiento a la izquierda en Java se proporciona a continuación,
Sintaxis:
x << n Here, x: an integer n: a non-negative integer
Tipo de valor devuelto: un número entero después de desplazar x n posiciones hacia la izquierda
Excepción: cuando n es negativo, la salida no está definida
A continuación se muestra el programa para ilustrar cómo podemos usar el operador de desplazamiento a la izquierda en Java.
Ejemplo 1:
Java
// Java program to illustrate the // working of left shift operator import java.io.*; class GFG { // Main method public static void main (String[] args) { // Number to be shifted int x = 5; // Number of positions int n = 1; // Shifting x by n positions towards left using left shift operator int answer = x << n; // Print the number obtained after shifting x by n positions towards left System.out.println("Left shift " + x + " by " + n + " positions : " + answer); // Number to be shifted x = answer; // Number of positions n = 2; // Shifting x by n positions towards left using left shift operator answer = answer << n; // Print the number obtained after shifting x by n positions towards left System.out.println("Left shift " + x + " by " + n + " positions : " + answer); } }
Left shift 5 by 1 positions : 10 Left shift 10 by 2 positions : 40
Ejemplo 2:
Java
// Java program to illustrate the // working of left shift operator import java.io.*; class GFG { // Main method public static void main (String[] args) { // Number to be shifted int x = -2; // Number of positions int n = 1; // Shifting x by n positions towards // left using left shift operator int answer = x << n; // Print the number obtained after shifting x by n positions towards left System.out.println("Left shift " + x + " by " + n + " positions : " + answer); // Number to be shifted x = answer; // Number of positions n = 2; // Shifting x by n positions towards // left using left shift operator answer = answer << n; // Print the number obtained after shifting x by n positions towards left System.out.println("Left shift " + x + " by " + n + " positions : " + answer); } }
Left shift -2 by 1 positions : -4 Left shift -4 by 2 positions : -16
Nota: Para el desplazamiento aritmético a la izquierda, dado que llenar los bits vacíos más a la derecha con ceros no afectará el signo del número, los bits vacíos siempre se llenarán con ceros y el bit de signo no se considera. Por lo tanto, se comporta de manera idéntica al desplazamiento a la izquierda lógico (sin signo). Por lo tanto, no hay necesidad de un operador de tamiz izquierdo sin firmar por separado.