Saltar al contenido

¿Cómo funcionan los operadores de turnos en Java?

Te damos la bienvenida a proyecto online, en este lugar encontrarás la respuesta que necesitas.

System.out.println(Integer.toBinaryString(2 << 11)); 

Desplaza binario 2(10) por 11 veces a la izquierda. Por eso: 1000000000000

System.out.println(Integer.toBinaryString(2 << 22)); 

Desplaza binario 2(10) por 22 veces a la izquierda. Por eso : 100000000000000000000000

System.out.println(Integer.toBinaryString(2 << 33)); 

Ahora, int es de 4 bytes, por lo tanto, 32 bits. Entonces, cuando cambia por 33, es equivalente a cambiar por 1. Por lo tanto: 100

2 del sistema de numeración decimal en binario es el siguiente

10

ahora si lo haces

2 << 11

sería, 11 ceros se rellenarían en el lado derecho

1000000000000

El operador de desplazamiento a la izquierda firmado "<" shifts a bit pattern to the left, and the signed right shift operator ">>" desplaza un patrón de bits a la derecha. El patrón de bits viene dado por el operando de la izquierda y el número de posiciones a desplazar por el operando de la derecha. El operador de desplazamiento a la derecha sin signo ">>>" desplaza un cero a la posición más a la izquierda, mientras que la posición más a la izquierda después de ">>" depende de la extensión del signo [..]

el desplazamiento a la izquierda da como resultado una multiplicación por 2 (*2) en términos o aritmética


Por ejemplo

2 en binario 10, si lo haces <<1 eso sería 100 cual es 4

4 en binario 100, si lo haces <<1 eso sería 1000 cual es 8


Ver también

  • guía-para-principiantes-absoluta-sobre-el-cambio-de-bits

El desplazamiento a la derecha y a la izquierda funcionan de la misma manera. Aquí se explica cómo funciona el desplazamiento a la derecha; El desplazamiento a la derecha: el operador de desplazamiento a la derecha, >>, desplaza todos los bits de un valor a la derecha un número específico de veces. Su forma general:

value >> num

Aquí, num especifica el número de posiciones para desplazar a la derecha el valor en valor. Es decir, >> mueve todos los bits en el valor especificado a la derecha el número de posiciones de bits especificado por num. El siguiente fragmento de código desplaza el valor 32 a la derecha dos posiciones, lo que da como resultado que se establezca en 8:

int a = 32;
a = a >> 2; // a now contains 8

Cuando un valor tiene bits que se "desplazan", esos bits se pierden. Por ejemplo, el siguiente fragmento de código cambia el valor 35 a la derecha dos posiciones, lo que hace que se pierdan los dos bits de orden inferior, lo que da como resultado que se establezca nuevamente en 8.

int a = 35;
a = a >> 2; // a still contains 8

Mirar la misma operación en binario muestra más claramente cómo sucede esto:

00100011 35 >> 2
00001000 8

Cada vez que cambia un valor a la derecha, divide ese valor por dos y descarta cualquier resto. Puede aprovechar esto para la división de enteros de alto rendimiento por 2. Por supuesto, debe asegurarse de no desplazar ningún bit del extremo derecho. Cuando se desplaza a la derecha, los bits superiores (más a la izquierda) expuestos por el desplazamiento a la derecha se rellenan con el contenido anterior del bit superior. Esto se llama extensión de signo y sirve para conservar el signo de los números negativos cuando los desplazas hacia la derecha. Por ejemplo, –8 >> 1 es –4, que en binario es

11111000 –8 >>1
11111100 –4

Es interesante notar que si cambia –1 a la derecha, el resultado siempre sigue siendo –1, ya que la extensión de signo sigue trayendo más unos en los bits de orden superior. A veces no es deseable extender los valores con signo cuando los está desplazando hacia la derecha. Por ejemplo, el siguiente programa convierte un valor de byte a su valor hexadecimal string representación. Tenga en cuenta que el valor desplazado está enmascarado con AND con 0x0f para descartar cualquier bit de signo extendido para que el valor pueda usarse como un índice en el array de caracteres hexadecimales.

// Masking sign extension.
class HexByte 
  static public void main(String args[]) 
    char hex[] = 
      '0', '1', '2', '3', '4', '5', '6', '7',
      '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
    ;
  byte b = (byte) 0xf1;
 System.out.println("b = 0x" + hex[(b >> 4) & 0x0f] + hex[b & 0x0f]);


Aquí está la salida de este programa:

b = 0xf1

Reseñas y calificaciones de la guía

Si haces scroll puedes encontrar las explicaciones de otros sys admins, tú asimismo tienes la opción de insertar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

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