Math “的公式;溢出减法;

Math “的公式;溢出减法;,math,computer-science,Math,Computer Science,假设我正在递增或递减一个索引,我将使用它在数组中移动 数组从索引0开始,在索引4结束。如果我在索引0处,并且想要向后移动1个索引,那么我应该在索引4处结束(环绕) 这可能是非常简单的,但出于某种原因,我无法想出一个公式来给出这个结果。“环绕加法”非常简单:索引%5+1,但我就是搞不懂减法。公式 newindex = (index + increment + arraylen) % arraylen 用于增量+1和-1(向前和向后移动) arraylen=5在您的示例中,正确的加法公式是(索引+

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

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

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

公式

newindex = (index + increment + arraylen) % arraylen
用于增量
+1
-1
(向前和向后移动)


arraylen=5
在您的示例中,正确的加法公式是
(索引+1)%5
。当
索引
为4时,您的版本给出了错误的结果

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

  • 在Python中,
    (索引-1)%5
    是正确的,因为
    %
    即使左侧为负数,也保证结果介于0和4之间(包括0和4)
  • 在C和Java中,
    (索引+4)%5
    是正确的,因为当左侧为负数时,
    %
    将返回负数余数。请注意,此公式也适用于Python
有关更多讨论,请参阅