【问题标题】:Modulus division when first number is smaller than second number第一个数小于第二个数时的模除法
【发布时间】:2013-04-25 01:36:27
【问题描述】:

如果这是一个简单的问题,我深表歉意,但是当第一个数字小于第二个数字时,我无法理解模除的概念。例如,当 1 % 4 我的书说余数是 1。我不明白 1 如何是 1 % 4 的余数。
1 / 4 是 0.25。我是否在错误地考虑模数除法?

【问题讨论】:

    标签: java modulo integer-division arithmetic-expressions


    【解决方案1】:

    首先,在 Java 中,% 是余数(不是取模)运算符,其语义略有不同。 也就是说,您需要考虑仅整数除法,就好像没有小数值一样。可以将其视为存储不可分割的项目:您可以在总容量为 1 的存储中存储零个大小为 4 的项目。存储最大项目数后您的剩余容量为 1。同样,13%5 是 3,因为您可以在 13 大小的存储中容纳 2 个大小为 5 的完整物品,剩余容量为13 - 2*5 = 3

    【讨论】:

    • 当第一个数字大于第二个数字时,我理解余数除法。所以我知道 13 % 5 是 3。我不明白的是,如果 5 % 13 时答案会是什么。
    • 也叫模算子!
    • @Ravi:这不是真的,模数和余数之间存在差异(例如blogs.msdn.com/b/ericlippert/archive/2011/12/05/…)。如果为负值,它会影响结果的符号是否跟随被除数或除数。 Javas % 操作符实现了余数语义。
    • @Ravi 你肯定错了(如果你拿Oracle作为参考),检查docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html
    • @misberner,嗯,所以它不是官方术语。感谢您的参考。
    【解决方案2】:

    如果将 1 除以 4,则得到 0,余数为 1。这就是模数,除法后的余数。

    【讨论】:

    • 如果是40%160会怎样
    • @yanivx 同样的事情,0 余数 40,所以答案是 40
    【解决方案3】:

    我将为“Jean-Bernard Pellerin”已经说过的内容添加一个更实际的例子。

    正确的是,如果你将 1 除以 4 得到 0,但是,为什么当你做 1 % 4 时你得到 1 作为结果?

    基本上是因为:

    n = a / b (integer), and
    m = a % b = a - ( b * n )
    

    所以,

     a    b    n = a/b  b * n  m = a%b
     1    4      0        0      1    
     2    4      0        0      2
     3    4      0        0      3
     4    4      1        0      0
     5    4      1        4      1
    

    结论:当a

    【讨论】:

    • "虽然 a
    【解决方案4】:

    另一种将其视为您的数字以另一个数字的倍数表示的方式。即a = n*b + r,其中b>r>=0。从这个意义上说,您的案例给出了1 = 0*4 + 1。 (编辑:只讨论正数)

    【讨论】:

      【解决方案5】:

      我认为您对 %(Remainder)/(Division) 运算符感到困惑。

      当你说% 时,你需要不断地除以除数,直到你得到余数 0 或可能的结尾。而你最终得到的是Remainder

      当你说/时,你将除数除以直到除数变为1。你得到的最终产品称为Quotient

      【讨论】:

        【解决方案6】:

        另一种清理问题的好方法, 在模数中,如果第一个数大于第二个数,则从第一个数中减去第二个数,直到第一个数小于第二个数。

        17 % 5 = ?
        17 - 5 = 12
        12 % 5 = ?
        12 - 5 = 7
        7 % 5 = ?
        7 - 5 = 2
        2 % 5  = 2
        

        因此 17 % 5、12 % 5、7 % 5 都给出 2 的答案。 这是因为 2 / 5 = 0(使用整数时)余数为 2。

        【讨论】:

          猜你喜欢
          • 2013-01-06
          • 2017-02-13
          • 2018-03-22
          • 2022-11-21
          • 2020-12-30
          • 1970-01-01
          • 2021-10-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多