Red de conocimientos sobre prescripción popular - Remedios caseros - Pregunta en lenguaje C, en operación bit a bit, si el operando se desplaza un bit hacia la derecha, ¿cuál es el equivalente del resultado? ¿Cuál sería el resultado si lo desplazas 1 hacia la izquierda?

Pregunta en lenguaje C, en operación bit a bit, si el operando se desplaza un bit hacia la derecha, ¿cuál es el equivalente del resultado? ¿Cuál sería el resultado si lo desplazas 1 hacia la izquierda?

1. Desplazamiento a la derecha, dividido por 2, desplazamiento a la derecha n bits dividido por 2 elevado a la enésima potencia;

El concepto de desplazamiento a la derecha es opuesto al desplazamiento a la izquierda, es decir, moverse unos pocos bits hacia la derecha El operador es > & gt ;

Desplazamiento a la derecha y desplazamiento a la izquierda manejan los bits de signo de forma diferente. Para enteros con signo, como el tipo int, el desplazamiento a la derecha mantendrá el bit de signo sin cambios, por ejemplo:

inti = 0x80000000

i = i & gt& gt1;//El valor de No lo es. Se convertirá en 0x40000000, sino en 0xc0000000.

2. Desplazarse hacia la izquierda, multiplicar por 2, desplazarse hacia la izquierda n bits multiplicado por 2 a la enésima potencia.

Hablemos primero del desplazamiento hacia la izquierda. Desplazamiento a la izquierda significa mover todos los bits de un número hacia la izquierda una cantidad de bits y usar

i = i & lt& lt2;// para mover el valor en I 2 bits hacia la izquierda.

Desplazarse hacia la izquierda significa: descartar el bit más alto y llenar el bit más bajo con 0.

Datos extendidos

Después de que el bit de signo se desplaza hacia la derecha, los números positivos se complementan con 0 y los números negativos se complementan con 1. Este es un desplazamiento aritmético a la derecha en lenguaje ensamblador. Del mismo modo, cuando el número de dígitos movidos excede la longitud del tipo, se toma el resto y se desplazan los dígitos restantes.

Número negativo 10100110 >; 5 (asumiendo que la longitud de la palabra es de 8 bits), obtienes 1111111.

En C, un desplazamiento a la izquierda es un desplazamiento lógico/aritmético a la izquierda (los dos son iguales), y un desplazamiento a la derecha es un desplazamiento aritmético a la derecha, lo que mantendrá el bit de signo sin cambios. En aplicaciones prácticas, los desplazamientos izquierda/derecha se pueden utilizar para realizar operaciones rápidas de multiplicación/división según la situación, lo cual es mucho más eficiente que los bucles.