当前位置:首页 > 行业动态 > 正文

按行优先存储地址计算

行优先存储地址按行展开连续排列,元素地址=基地址+(行号×列数+列号)×

行优先存储地址计算方法

基本概念

行优先存储:在二维数组中,按行顺序依次存储元素,即先存储第0行的所有元素,再存储第1行,依此类推。

地址计算公式

假设:

  • 数组为 m行 × n列
  • 元素从 (0,0) 开始编号
  • 每个元素占用 L 字节
  • 基地址为 BaseAddress

元素 (i,j) 的地址

Address = BaseAddress + (i  n + j)  L

示例计算

示例
一个 3行×4列 的二维数组,首地址为 1000,每个元素占 4 字节。
计算元素 (2,3) 的存储地址。

参数
行号 i 2
列号 j 3
总列数 n 4
元素大小 L 4 字节
基地址 1000

计算过程

Address = 1000 + (24 + 3)  4 
        = 1000 + (8 + 3)  4 
        = 1000 + 11  4 
        = 1044
元素位置 (0,0) (0,1) (0,2) (0,3) (1,0) (2,3)
地址 1000 1004 1008 1012 1016 1044

注意事项

  1. 索引从0开始:行号和列号均从0计数。
  2. 元素大小影响:需根据数据类型确定 L(如 int 为4字节,float 为4字节)。
  3. 边界检查:确保 i < mj < n,否则越界。

相关问题与解答

问题1:行优先与列优先存储的区别是什么?

解答

  • 行优先:先存第0行,再存第1行,依此类推。
  • 列优先:先存第0列,再存第1列,依此类推。
    公式对比
    | 存储方式 | 元素 (i,j) 地址公式 |
    |———-|————————————|
    | 行优先 | BaseAddress + (in + j)L |
    | 列优先 | BaseAddress + (jm + i)L |

问题2:若数组首地址为 2000,每个元素占 2 字节,计算 (1,2) 的地址(行优先,4行×5列)。

解答

Address = 2000 + (15 + 2)  2 
        = 2000 + (5 + 2)  2 
        = 2000 + 14 
        = 20
0