¿Conoce algún truco / hack para realizar operaciones aritméticas con los registros de desplazamiento?

1

El caso trivial es usar SRL para expresar la multiplicación:
val * 2^num => val sll num
val sll 2 + val sll 8 => val * 10

¿Conoces algún otro caso como, por ejemplo:
val*(2^num) + 1 => ?

¿Cómo se utilizan las SRL?

    
pregunta user17163

1 respuesta

1

Es relativamente fácil construir un circuito que tome dos flujos de datos en serie del primer LSB junto con una señal que identifica el primer bit, y emitirá la suma o diferencia como un flujo de datos en serie. Una cantidad fija de circuitos podrá manejar entradas de tamaño arbitrario.

Hay dos enfoques generales para realizar la multiplicación utilizando registros de desplazamiento. Si se desea multiplicar un número de N bits por un número de M bits, se puede usar hardware relativamente simple para realizar la operación en pasos de NxM aproximadamente utilizando el "sumador" anterior más algunos circuitos para coordinar las cosas (suponiendo que los circuitos externos puedan proporcionar uno de los multiplicandos poco a poco, puede suministrar el otro multiplicando repetidamente y puede realimentar el producto parcial). Un enfoque mucho más rápido requiere el uso de M etapas de adición de un solo bit, y puede reducir el tiempo requerido a aproximadamente N + M (la longitud del resultado). Tenga en cuenta que incluso el enfoque más rápido no requiere el uso de una lógica de propagación de acarreo rápida; Cada etapa puede bloquear su salida de acarreo y aceptarla como una entrada de acarreo para el siguiente paso.

    
respondido por el supercat

Lea otras preguntas en las etiquetas