El resto de un número de 16 bits dividido por 3

0

Tengo que diseñar un circuito lógico combinacional que acepte un número de 16 bits como entrada y luego calcule el resto del número dividido por 3 como su salida.

Originalmente no tenía idea de cómo proceder y si hay algún algoritmo conveniente para encontrar el resto.

Según el enlace proporcionado por @RJR, aprendí que el siguiente algoritmo recursivo podría ser una posibilidad:

x mod 3 = ((x >> 2) + (x & 3)) mod 3

¿Se puede implementar esto con lógica combinatoria? ¿Qué tipo de enfoque se tomaría para dividir el problema en bloques funcionales que luego pueden reducirse a puertas?

¿Hay una mejor solución?

ACTUALIZACIÓN: Si separo los bits 2 por 2 y los agrego, y hago lo mismo con el resultado, entonces el número restante sería entre 00 y 11. Para 00 y 11, el resto es 0, para 01 el resto es 1 y para 10 el resto el resto es 2. ¿Cómo puedo agregar 8 números de 2 bits y obtener una respuesta de 6 bits (digamos)? La respuesta a esto puede resolver mi problema.

    
pregunta Hamed

1 respuesta

1

Lo hice :) Hice un dispositivo que calcula el resto de un número de 4 bits dividido por 3 (usando la tabla de verdad y los mapas de Karnaugh) y luego conecté 4 de ellos para la entrada de 16 bits, luego dos más para los 8 bits resultantes, y 1 más para los 4 bits finales y funciona perfectamente! De todos modos muchas gracias por tu ayuda.

    
respondido por el Hamed

Lea otras preguntas en las etiquetas