En C/C++ solo hay un operador de desplazamiento a la derecha ‘>>’ que debe usarse solo para enteros positivos o enteros sin signo. No se recomienda el uso del operador de desplazamiento a la derecha para números negativos en C/C++, y cuando se usa para números negativos, la salida depende del compilador. A diferencia de C++, Java admite el seguimiento de dos operadores de desplazamiento a la derecha.
Aquí discutiremos los dos operadores de desplazamiento a la derecha que se enumeran:
- Desplazamiento a la derecha firmado “>>”
- Desplazamiento a la derecha sin firmar “>>>”
Tipo 1: Desplazamiento a la derecha firmado
En Java, el operador ‘>>’ se firma como operador de desplazamiento a la derecha. Todos los números enteros están firmados en Java, y está bien usar >> para números negativos. El operador ‘>>’ usa el bit de signo (bit más a la izquierda) para llenar las posiciones posteriores después del cambio. Si el número es negativo, entonces 1 se usa como relleno y si el número es positivo, entonces 0 se usa como relleno. Por ejemplo, si la representación binaria de un número es 1 0….100, entonces desplazándolo a la derecha por 2 usando >> lo convertirá en 11 …….1.
Ejemplo:
Java
// Java Program to Illustrate Signed Right Shift Operator // Main class class GFG { // Main driver method public static void main(String args[]) { int x = -4; System.out.println(x >> 1); int y = 4; System.out.println(y >> 1); } }
-2 2
Tipo 2: Operador de desplazamiento a la derecha sin firmar
En Java, el operador ‘>>>’ denota un operador de desplazamiento a la derecha sin signo y siempre completa 0 independientemente del signo del número.
Ejemplo:
Java
// Java Program to Illustrate Unsigned Right Shift Operator // Main class class GFG { // main driver method public static void main(String args[]) { // x is stored using 32 bit 2's complement form. // Binary representation of -1 is all 1s (111..1) int x = -1; // The value of 'x>>>29' is 00...0111 System.out.println(x >>> 29); // The value of 'x>>>30' is 00...0011 System.out.println(x >>> 30); // The value of 'x>>>31' is 00...0001 System.out.println(x >>> 31); } }
7 3 1
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA