Operadores de desplazamiento a la derecha bit a bit en Java

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);
    }
}
Producción

-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);
    }
}
Producción

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *