上一篇
按行优先存储地址计算
- 行业动态
- 2025-05-17
- 6
行优先存储地址按行展开连续排列,元素地址=基地址+(行号×列数+列号)×
行优先存储地址计算方法
基本概念
行优先存储:在二维数组中,按行顺序依次存储元素,即先存储第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 |
注意事项
- 索引从0开始:行号和列号均从0计数。
- 元素大小影响:需根据数据类型确定
L
(如int
为4字节,float
为4字节)。 - 边界检查:确保
i < m
且j < 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