📜  计算N维数组中元素的地址

📅  最后修改于: 2021-05-17 22:40:34             🧑  作者: Mango

N维数组: N维数组基本上是一个数组数组。由于将一维数组标识为单个索引,因此使用两个索引标识二维数组,类似地,使用N个索引标识N维数组。多维数组的声明如下:

说明

  • 在此,NDA是N维数组的名称。它可以是任何有效的标识符名称。
  • 在以上语法中, S 1 ,S 2 ,S 3 ……S N表示N个维度的最大大小。
  • 对于所有尺寸,下限均假定为零。
  • 上面的数组被声明为整数数组。它也可以是除整数以外的任何有效数据类型。

N维数组的地址计算

假设:

  • N维数组NDA的最大大小为N维,分别为S 1 ,S 2 ,S 3 ,……,S N。
  • 的元件,其地址需要被具有分别计算指数L 1,L 2,L 3,………… ..lñ。
  • 数组索引可能没有下限为零。例如,考虑以下数组T: T [-5…5] [2……9] [14…54] [-9…-2]。

说明

  • 在上面的数组T中,索引的下界不是零。
  • 这样,数组的索引大小现在就不同了,可以使用以下公式计算:
  • 因此,这里S 1 = 5 –(-5)+1 =11。类似地,S 2 = 8,S 3 = 41和S 4 = 8。

对于地址计算,下限为t 1 ,t 2 ,t 3 …….t N。存在两种存储数组元素的方法:

  • 行专业
  • 专栏专业

列主要公式:

行专业公式:

学习公式的最简单方法是:

对于主要行:如果width = 5,则内部序列为E 1 S 2 + E 2 S 3 + E 3 S 4 + E 4 S 5 + E 5 ;如果width = 3,则内部序列为E 1 S 2 + E 2 S 3 + E 3 。找出顺序中的图案,并针对任何宽度的公式遵循四个基本步骤:

  • 写下内部顺序。
  • 除第一个项外,在每个E后面加上右括号。因此,对于宽度= 5,它变为
  • 首先放置所有的开口支架。
  • 在公式中包含基地址和宽度。

对于Column Major而言,该方法类似,但是内部序列的模式与row-major模式相反。

对于主要列:如果width = 5,则内部序列为E 5 S 4 + E 4 S 3 + E 3 S 2 + E 2 S 1 + E 1

示例:让我们采用基地址为1200的多维数组A [10] [20] [30] [40] 。任务是找到元素A [1] [3] [5] [6]的地址

在此,BAd = 1200,宽度= 4。
S1 = 10,S2 = 20,S3 = 30,S4 = 40

由于未给出下限,因此下限假定为零。
E1 = 1 – 0 = 1;
E2 = 3 – 0 = 3;
E3 = 5 – 0 = 5;
E4 = 6 – 0 = 6。

可以使用任何一种技术(行优先或列优先)来计算答案(除非指定)。
通过将公式应用于主要行,可直接将公式写为:

A [1] [3] [5] [6] = 1200 + 4((((1×20 + 3)30 +5)40 + 6)

= 1200 +4((23×30 +5)40 +6)

= 1200 + 4(695×40 + 6)

= 1200 +(4×27806)

= 112424。