Red de conocimiento informático - Computadora portátil - Pregunta en lenguaje C, en operaciones de bits, ¿cuál es el equivalente del resultado de cada desplazamiento a la derecha del operando? Si se desplaza 1 bit hacia la izquierda, ¿cuál es el equivalente del resultado?

Pregunta en lenguaje C, en operaciones de bits, ¿cuál es el equivalente del resultado de cada desplazamiento a la derecha del operando? Si se desplaza 1 bit hacia la izquierda, ¿cuál es el equivalente del resultado?

1. Desplazarse hacia la derecha, dividir entre 2. Desplazarse hacia la derecha n bits y dividir entre n potencia de 2

El concepto de desplazamiento hacia la derecha es opuesto al desplazamiento hacia la izquierda, que es; mueve una cantidad de bits hacia la derecha. El operador es gt; gt;;

El bit de signo del desplazamiento a la derecha es diferente del bit de signo del desplazamiento a la izquierda. Para enteros con signo, como el tipo int, hacia la derecha. shift mantendrá el bit de signo sin cambios:

inti=0x80000000;

i=igt;gt;1; //El valor de i no se convertirá en 0x40000000, sino en 0xc0000000

2. Desplazarse hacia la izquierda y multiplicar Desplazar n bits hacia la izquierda por 2 multiplicado por 2 elevado a la enésima potencia;

El primero es el desplazamiento hacia la izquierda para mover todos los bits de. un número a la izquierda. Utilice el operador lt;lt; en lenguaje C. Por ejemplo: inti=1;

i=ilt;lt;2;//Mover el valor en i hacia la izquierda 2 bits

El significado de desplazamiento a la izquierda es: descartar el bit más alto, 0 complementa el bit más bajo

Extensión

Los bits importantes se mueven hacia la derecha. Si es un número positivo, se rellena con 0. Si es un número negativo. número, se rellena con 1. Esto significa en lenguaje ensamblador el desplazamiento aritmético a la derecha. Además, cuando el número de bits movidos excede la longitud del tipo, se toma el resto y se desplaza el número restante de bits.

Menos 10100110gt;gt;5 (asumiendo que la longitud de la palabra es de 8 bits), obtienes 11111101

En lenguaje C, el desplazamiento a la izquierda es un desplazamiento a la izquierda lógico/aritmético (que es lo mismo) , el desplazamiento a la derecha es un desplazamiento aritmético a la derecha, que mantendrá el bit de signo sin cambios. En la operación real, puede usar desplazamiento a la izquierda / desplazamiento a la derecha para realizar operaciones rápidas de multiplicación y división según la situación, lo cual es mucho más eficiente que el bucle.