微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

“溢出减法”的公式

如何解决“溢出减法”的公式

假设我要递增或递减一个索引,我将使用该索引在数组中移动。

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

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

解决方法

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

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

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

更多讨论见this other Q&A

,

公式

newindex = (index + increment + arraylen) % arraylen

适用于增量 +1-1(向前和向后移动)。

arraylen = 5 在您的示例中

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。