最近我解决了一个我必须计算 (ab)%n 的问题。当 ab 是正数时,结果是不言自明的,但对于负数,我得到的结果似乎令人困惑..我只是想知道我们如何计算这个结果为负数。
任何处理模运算符属性的链接都是最受欢迎的。
最近我解决了一个我必须计算 (ab)%n 的问题。当 ab 是正数时,结果是不言自明的,但对于负数,我得到的结果似乎令人困惑..我只是想知道我们如何计算这个结果为负数。
任何处理模运算符属性的链接都是最受欢迎的。
http://en.m.wikipedia.org/wiki/Modulo_operation
在许多编程语言(C、Java)中,模运算符被定义为模数与第一个操作数具有相同的符号。这意味着以下等式成立:
(-a) % n = -(a % n)
例如,-8%3 将是 -2,因为 8%3 是 2。
其他的,例如 Python,计算 a % n 代替 n 潜水时的正余数,这意味着
(-a) % n = n - (a % n)
例如,-8%3 是 1,因为 3-(8%3) 是 3-2 是 1。
请注意,在模算术中,添加或减去 n 的任何倍数都不会改变结果,因为“相等”(如果您更喜欢该术语,则为全等)是根据可除性定义的:如果 X 是 n 的倍数,则 X 等于 0,如果 AB 是 n 的倍数,则 A 等于 B。例如 -2 等于 1 模 3,因为 -2-1 = -3 可以被 3 整除。