1

「文字列」(たとえば「1bed658e4cbba3a7」)として指定された64ビット整数に対して「%」演算を実行する高速で簡単な方法はありますか?

Google Closure Libraryにはそのような機能があることは知っていますが、外部ライブラリは使用したくないと思います。さらに、内部では3つの演算(除算、乗算、減算)として機能し、最適ではないようです。

追加:問題は、JavaScriptが精度を失うことなく64ビット整数を処理できないことです。詳細については、この質問を参照してください

4

1 に答える 1

2

右側のオペランドに上限がある場合は、64ビット整数を2つの部分に分割し、そこから係数を計算できます。(これは3%の操作であり、それがあなたの目的にとって十分に速いかどうかはわかりません)。

たとえば、x%c、およびc <2 ^ 32を計算する場合は、xをaとbの2つの部分に分割して、次のように計算できます。

(a * 2^32 + b) % c = (((a % c)* (2^32 % c)) + b) % c

ただし、これはcが小さいことに依存します。64ビットに近い場合は、他の方法を探す必要があります。

于 2012-11-12T21:52:15.520 に答える