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.