理解 Mod 数学与编程中的运算符

Understanding Mod Operator in Math vs Programming

据我了解,在数学中,mod运算符是欧氏除法余数的结果。其中 0 ≤ r < |b|,表示结果始终为正。

然而,在编程中,有许多语言的运算符可用于表示余数运算符或 modulo 运算符,它们在处理负值的方式上有所不同。

(我相信数学中的 mod 运算符、编程中的余数运算符和编程中的 mod 运算符对正数产生相同的结果)

根据Modulo operation with negative numbers

"With a remainder operator, the sign of the result is the same as the sign of the dividend while with a modulo operator the sign of the result is the same as the divisor."

所以编程中的mod运算符不是指数学中的mod运算符?

答案的符号是编程中mod运算符与余数运算符之间的主要区别因素吗?

在数学上,模数是群论的一部分,也是集合的概念。您可以通过模数加法生成一组中的所有数字。所以如果你的集合是整数模 10,你数 0-9 然后从 0 开始。模数下没有负数的概念。

在编程中,余数就是除法后剩下的部分。因此,如果将 3 除以 10,则得到 0 和 3 的余数。如果将 -3 除以 10,则得到 0,余数为 -3,而不是 -1,余数为 7。但是数学模数是7.

那些设计我们现在使用的整数除法的人认为向 0 舍入比向负无穷大舍入更合乎逻辑,因此负除法必然会产生负余数。

如果您想将余数转换为模数,您需要将模数添加到任何负余数中,以便将它们映射到正确的范围内。