Desplazamiento de bits : cambiar las posiciones de los bits en una palabra de máquina .
La mayoría de las computadoras no pueden direccionar directamente los bits que están contenidos en grupos de 8, 16, 32 o 64 bits en una palabra de máquina . Hay muchas instrucciones de máquina para admitir la manipulación de bits , incluidos varios tipos de cambios. Todos los desplazamientos son similares entre sí en el comportamiento de los bits intermedios, que simplemente se desplazan hacia la izquierda o hacia la derecha en cierta cantidad. Sin embargo, el comportamiento de los bits de borde que salen de la palabra y que aparecen en la palabra depende del tipo de desplazamiento.
En electrónica, los cambios de bit se realizan en registros de cambio .
Un cambio en el que el bit saliente desaparece sin afectar a los bits restantes y el bit 0 se escribe en lugar del bit aparecido .
Un ejemplo de cómo funciona la operación de cambio:
En la mayoría de los procesadores, el bit saliente se almacena en la bandera de acarreo . Esta función es muy utilizada cuando se trabaja con números multibyte .
En este cambio, la palabra se trata no solo como un grupo de bits, sino como un entero en complemento a dos . Cuando se desplaza a la izquierda, se comporta como un desplazamiento lógico, cuando se desplaza a la derecha, el bit saliente desaparece sin afectar a los bits restantes, y el bit correspondiente al signo se establece en lugar del bit aparecido.
Un ejemplo de la operación de cambio de un número de 8 bits en un código directo:
Un ejemplo de la operación de desplazamiento de un número de 8 bits escrito en un código adicional de hasta 2:
Es fácil ver que con un desplazamiento aritmético, un desplazamiento a la izquierda corresponde a la multiplicación por 2, y un desplazamiento a la derecha corresponde a la división por 2 (en el caso general, a la base del sistema numérico) redondeado a −∞. Por ejemplo:
1011 = -5 1111 = -1 >>a1 >>a1 ---- ---- 1101 = -3 1111 = -1La implementación del circuito de las operaciones de cambio es muy simple. Es por eso que se recomienda usar estas operaciones para operaciones de multiplicación y división de números enteros por números iguales a la potencia de 2 (2, 4, 8, 16, 32, 64, etc.) - a menos, por supuesto, tal redondeo de números negativos no interfiere.
Con este cambio, el bit saliente aparece en lugar del número libre que apareció en el otro extremo.
La arquitectura de muchos procesadores incluye una bandera de acarreo (por ejemplo, cfen x86 ). Esta operación realiza una rotación en el número de bit ( n +1), que consta de un registro y una bandera de acarreo.
Por ejemplo, si tenemos el número 11111010b en el registro, la bandera de desplazamiento cíclico a la derecha es 0.
La operación de rotación de bits de acarreo se utiliza cuando se trabaja con números multibyte . En particular, para desplazar a la derecha un número largo de 1, borre [1] cf (en el caso de una división con signo, escríbalo en el cfbit de orden superior de la palabra de orden superior) y gire de uno en uno a través de cfcada palabra, comenzando desde la parte superior. Por ejemplo, supongamos que tenemos el número 011000111100b que abarca tres palabras de 4 bits:
Era: HI=0110, MED=0011, LO=1100, cf=0 Después del cambio HI: HI=0011, MED=0011, LO=1100, cf=0 Después del cambio MED: HI=0011, MED=0001, LO=1100, cf=1 Después del cambio LO: HI=0011, MED=0001, LO=1110, cf=0Prácticamente no se utilizan desplazamientos a través del registro de bandera de más de 1 bit.