首页 > 解决方案 > “溢出减法”的公式

问题描述

假设我正在增加或减少用于在数组中移动的索引。

数组从索引 0 开始,到索引 4 结束。如果我在索引 0 并且想要向后移动 1 个索引,我应该在索引 4 结束(环绕)。

这可能非常简单,但由于某种原因,我无法想出一个可以给我这个结果的公式。“环绕加法”非常简单:索引 % 5 + 1,但我就是想不出减法。

标签: mathcomputer-science

解决方案


加法的正确公式是(index + 1) % 5。您的版本在 4 时给出了错误的结果index

正确的减法公式取决于%您使用的语言中运算符的行为:

  • 在 Python 中,(index - 1) % 5这是正确的,因为%即使左侧为负数,也能保证结果介于 0 和 4 之间。
  • 在 C 和 Java 中,(index + 4) % 5是正确的,因为%当左侧为负数时会返回负数。请注意,此公式也适用于 Python。

有关更多讨论,请参阅其他问答


推荐阅读