Cambio de bit

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 22 de marzo de 2015; la verificación requiere 41 ediciones .

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 .

Desplazamiento lógico

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 .

Desplazamiento aritmético

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.

Ejemplo #1

Un ejemplo de la operación de cambio de un número de 8 bits en un código directo:

Ejemplo #2

Un ejemplo de la operación de desplazamiento de un número de 8 bits escrito en un código adicional de hasta 2:

Conclusión

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 = -1

La 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.

Desplazamiento cíclico

Con este cambio, el bit saliente aparece en lugar del número libre que apareció en el otro extremo.

Ejemplo

  • Digamos que tenemos el número 11111010b (en binario ).
  • Si nos desplazamos 1 bit a la izquierda, obtenemos el número 11110101b.
  • Si desplazamos el número original 1 bit hacia la derecha, obtenemos el número 01111101b.

Rotar a través del bit de acarreo

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.

  • Después de desplazarse 1 bit a la izquierda en el registro 11110101b, la bandera de acarreo es 1.
  • A continuación, después de desplazarse 1 bit a la derecha en el registro 01111101b, la bandera de acarreo es 1.

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=0

Prácticamente no se utilizan desplazamientos a través del registro de bandera de más de 1 bit.

Véase también

Notas

  1. En lugar de borrar el indicador para que se procese la primera palabra, se puede usar un cambio aritmético\lógico si establece el indicador en cfel valor del bit de salida.

Enlaces