【问题标题】:Understanding Mod Operator in Math vs Programming理解数学与编程中的 Mod 运算符
【发布时间】:2019-09-04 08:46:44
【问题描述】:

据我了解,在数学中,mod 运算符是欧几里得除法余数的结果。其中 0 ≤ r

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

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

根据Modulo operation with negative numbers

"使用余数运算符,结果的符号与 被除数的符号,而使用模运算符的符号 结果与除数相同。”

那么编程中的mod运算符不是指数学中的mod运算符吗?

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

【问题讨论】:

    标签: modulo modulus modular-arithmetic


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 因此,尽管编程中的余数和 mod 是不同的(余数是除法后剩下的,mod 正在寻找“环绕数字”),但它们都以类似的方式计算,包括找到余数?
    • 是的,它们对于正数是相同的,所以这可能就是为什么有时将余数称为“mod”运算符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    相关资源
    最近更新 更多