我正在用 Java 进行一些错误更正,长话短说;
在模式 11 下:
-4 mod 11 = 7
我已经通过使用 Google 的计算器和几个在线模计算器确认了这一点,但我终其一生都无法弄清楚如何用 Java 做到这一点。
我在想我需要使用逆表来找到正确的数字,但我似乎在绕圈子。
任何输入将不胜感激。
预先感谢
托尼
以下将计算n mod 11
任何整数n
:
(n % 11 + 11) % 11
的结果n % 11
在范围内-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;
}
比 using 清晰得多% 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。