¿Reimplementar módulo usando cambios de bit?

Estoy escribiendo algún código para un sistema muy limitado donde el operador de modulación es muy lento. En mi código, se debe utilizar un módulo aproximadamente 180 veces por segundo y pensé que eliminarlo lo más posible aumentaría significativamente la velocidad de mi código, ya que ahora un ciclo de mi mainloop no se ejecuta en 1/60 de un segundo como debiera Me preguntaba si era posible volver a implementar el módulo utilizando solo cambios de bits, como es posible con la multiplicación y la división. Así que aquí está mi código hasta ahora en c ++ (si puedo realizar un módulo usando ensamblador, sería aún mejor). ¿Cómo puedo eliminar el módulo sin usar división o multiplicación?

    while(input > 0)
{
    out = (out << 3) + (out << 1);
    out += input % 10;

    input = (input >> 8) + (input >> 1);
}

EDITAR: En realidad me di cuenta de que necesito hacerlo más de 180 veces por segundo. Ver como el valor de entrada puede ser un número muy grande de hasta 40 dígitos.

Respuestas a la pregunta(5)

Su respuesta a la pregunta