我正在为一个非常有限的系统编写代码,其中模运算非常缓慢。在我的代码中,每秒需要使用模约180次,我想尽可能地减少其使用次数,以显著提高代码的速度。目前我的主循环一次不像应该的那样在1/60秒内运行完。我想知道是否有可能仅使用位移操作重新实现模运算,就像使用乘法和除法一样。以下是我的c++代码(如果可以使用汇编来执行模运算,那就更好了)。如何在不使用除法或乘法的情况下删除模操作?
while(input > 0)
{
out = (out << 3) + (out << 1);
out += input % 10;
input = (input >> 8) + (input >> 1);
}
编辑:实际上我意识到我需要每秒超过180次以上的操作。因为输入值可能是一个长达40位数字的非常大的数。