Carácter de desplazamiento a la derecha sin signo, carácter de desplazamiento a la izquierda, carácter de desplazamiento a la derecha con signo en js, java

La operación de cambio es un cambio bajo regular del binario. La operación de cambio puede diseñar muchos efectos maravillosos y se usa ampliamente en la programación de gráficos e imágenes.

  • operador "<<"

El operador "<<" realiza una operación de desplazamiento a la izquierda. Durante la operación de cambio, el bit de signo siempre permanece sin cambios. Si hay una posición vacante a la derecha, se llena automáticamente con 0; el valor superior a 32 bits se descarta automáticamente.

Mueva el número 5 a la izquierda en 2 dígitos y el valor de retorno es 20.

console.log(5 << 2);  //返回值20

  
   
   
  • 1

Utilice la fórmula para demostrar, como se muestra en la figura.
Inserte la descripción de la imagen aquí

思考:为啥没有<<<呢
因为左位移是填补右边空出的位,符号位不影响它的值哦

  
   
   
  • 1
  • 2
  • operador ">>"

El operador ">>" realiza una operación de cambio a la derecha firmada. Al contrario de la operación de desplazamiento a la izquierda, desplaza todos los bits válidos en el número de 32 bits a la derecha como un todo, y luego usa el valor del bit de signo para llenar los bits vacantes . Los valores superados durante el movimiento se descartarán.

Desplazando el valor de 1000 a la derecha en 8 bits, el valor de retorno es 3.

console.log(1000 >> 8);  //返回值3

  
   
   
  • 1

Utilice la fórmula para demostrar, como se muestra en la figura.

Inserte la descripción de la imagen aquí

Si el valor -1000 se desplaza 8 bits hacia la derecha, el valor de retorno es -4.

console.log(-1000  >> 8);  //返回值 -4

  
   
   
  • 1

Utilice la fórmula para demostrar, como se muestra en la figura. Cuando el valor del bit de signo es 1, los bits vacantes a la izquierda del bit válido se rellenan con 1.

  • operador ">>>"

El operador ">>>" realiza una operación de cambio a la derecha de cinco símbolos. Desplaza todos los dígitos de un entero de 32 bits sin signo a la derecha como un todo. Para las operaciones de desplazamiento a la derecha sin signo o positivo, los resultados de las operaciones de desplazamiento a la derecha sin firmar y de desplazamiento a la derecha con signo son los mismos.

El valor de retorno de las siguientes dos líneas de expresiones es el mismo.

console.log(1000 >> 8);  //返回值3
console.log(1000 >>> 8);  //返回值3

  
   
   
  • 1
  • 2

Para números negativos, un desplazamiento a la derecha sin firmar usará 0 para llenar todas las vacantes y, al mismo tiempo, el número negativo se tratará como un número positivo y el resultado será muy grande. Por lo tanto, tenga cuidado al usar el número sin firmar operador de cambio a la derecha para evitar errores accidentales.

console.log(-1000 >> 8);  //返回值 -4
console.log(-1000 >>> 8);  //返回值 16777212

  
   
   
  • 1
  • 2

Utilice la fórmula para demostrar, como se muestra en la figura. El espacio de la izquierda ya no se rellena con el valor del bit de signo, sino que se rellena con 0.

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/fxwentian/article/details/115178735
Recomendado
Clasificación