mod オペレーターが非常に遅い非常に限られたシステム用のコードを書いています。私のコードでは、モジュロを 1 秒あたり約 180 回使用する必要があり、それを可能な限り削除するとコードの速度が大幅に向上すると考えました。 2番目に必要です。乗算と除算で可能なように、ビットシフトのみを使用してモジュロを再実装できるかどうか疑問に思っていました。したがって、これまでの私のコードはC ++です(アセンブリを使用してモジュロを実行できれば、さらに良いでしょう)。除算や乗算を使用せずにモジュロを削除するにはどうすればよいですか?
while(input > 0)
{
out = (out << 3) + (out << 1);
out += input % 10;
input = (input >> 8) + (input >> 1);
}
編集:実際には、1秒間に180回以上行う必要があることに気付きました。入力の値は、最大 40 桁の非常に大きな数値になる可能性があります。