Я пишу код для очень ограниченной системы, в которой оператор mod работает очень медленно. В моем коде модулю нужно использовать примерно 180 раз в секунду, и я решил, что удаление его в максимально возможной степени значительно увеличит скорость моего кода, так как теперь один цикл моего mainloop не работает в 1/60 вторых, как следует. Мне было интересно, возможно ли повторное внедрение модуля, используя только бит-сдвиги, как это возможно при умножении и делении. Итак, вот мой код до сих пор в С++ (если я смогу выполнить модульную сборку, было бы еще лучше). Как удалить модуль без использования деления или умножения?
while(input > 0)
{
out = (out << 3) + (out << 1);
out += input % 10;
input = (input >> 8) + (input >> 1);
}
EDIT: На самом деле я понял, что мне нужно делать это более 180 раз в секунду. Увидев, что значение ввода может быть очень большим числом до 40 цифр.