¿Cómo encuentro el siguiente bit para cambiar en un código Gray en tiempo constante?

Tengo un pequeño procesador de 8 bits que tiene un decodificador de N a M en algunas líneas de salida; por ejemplo, para el caso de 5 a 32 bits, escribo 00101 y el bit 5 cambia de estado. La única interfaz para la salida es el estado de cambio, no hay relectura.

El dispositivo cuenta los eventos que ocurren rápidamente (pero al azar) y debe proporcionar este conteo como un código de 'cambios de un solo bit' a otro dispositivo. Los pines de salida son leídos en paralelo por otro dispositivo, y pueden leerse tan rápido o tan escasamente como lo decida el otro dispositivo, por lo que el conteo es necesario.

NO necesito usar el código gris binario reflectante estándar: puedo usar cualquier código de cambio de un solo bit.

Sin embargo, quiero poder rastrear el siguiente bit para cambiar de manera eficiente.

No tengo una instrucción "LowestBitSet", y encontrar el bit más bajo establecido en cuatro registros de 8 bits consume mucho tiempo, por lo que no puedo usar este enfoque "común":

  Keep binary counter A
  Find B as A XOR (A+1)
  Bit to change is LowestBitSet in B 

Deseo calcular esto en la menor cantidad de memoria y registros posibles, y la memoria definitivamente está demasiado restringida para cualquier tabla de búsqueda grande. El tiempo de ciclo es el factor más importante.

¿Alguna sugerencia sobre algoritmos?

Respuestas a la pregunta(7)

Su respuesta a la pregunta