re implementar módulo usando bit shift?

Eu estou escrevendo algum código para um sistema muito limitado, onde o operador mod é muito lento. No meu código um modulo precisa ser usado cerca de 180 vezes por segundo e eu percebi que removê-lo o máximo possível aumentaria significativamente a velocidade do meu código, a partir de agora um ciclo do meu mainloop não roda em 1/60 de um segundo como deveria. Eu queria saber se era possível reimplantar o módulo usando apenas mudanças de bits como é possível com multiplicação e divisão. Então aqui está o meu código até agora em c ++ (se eu posso executar um módulo usando assembly seria ainda melhor). Como posso remover o módulo sem usar divisão ou multiplicação?

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

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

EDITAR: Na verdade, percebi que preciso fazer isso mais de 180 vezes por segundo. Vendo como o valor da entrada pode ser um número muito grande de até 40 dígitos.

questionAnswers(5)

yourAnswerToTheQuestion