私はJavaでエラー訂正を行っており、長い話を短くしています。
mod 11の下:
-4 mod 11 = 7
これは、Googleの計算機といくつかのオンラインモジュロ計算機を使用して確認しましたが、Javaでそれを行う方法を一生理解することはできません。
正しい数を見つけるために逆テーブルを使用する必要があると思いますが、私は円を描いて回っているようです。
任意の入力をいただければ幸いです。
少し早いですがお礼を
トニー
n mod 11
以下は、任意の整数を計算しn
ます。
(n % 11 + 11) % 11
の結果は...n % 11
の範囲にあります。後者が負の場合、後続の加算と2番目のモジュロ演算が加算されます。-10
10
11
n % 11
この式はどの基数でも機能します11
。別の正の整数に置き換えるだけです。
必要なことを実行するmod関数を作成するのは非常に簡単です。ここの例:
private int mod(int x, int y)
{
int result = x % y;
if (result < 0)
{
result += y;
}
return result;
}
を使用するよりもはるかに明確% 11 + 11) % 11
であり、操作を見るとすぐに意味があります。よりmod(32, 11)
も明確であり、余分な操作を節約できます。32 mod 11
(32 % 11 + 11) % 11
%
Java言語仕様によると、Javaの%
演算子は剰余演算子であり、モジュロ演算子ではありません。
正のモジュロ(4 mod 11)を取り、後者の値から引くと、毎回正しい答えが得られるはずです。(つまり、11-(4 mod 11)= 7)私は実際にそれを調べてテストしていませんが、それは理にかなっているようです。
BigInteger#modを使用してみてください。