二维数组 A[4][4],每个元素用相邻的2个字节存储,存储器按字节编址,已知 A的起始地址 LOC (A[O][O]为 1000,按行存储时,元素 A[2][2]第一个字节地址 是多少?
时间: 2023-09-18 16:06:37 浏览: 54
按行存储时,A[2][2]的存储地址可以通过以下公式计算:
```
LOC(A[2][2]) = LOC(A[0][0]) + (2*4*2) + (2*2)
```
其中,`LOC(A[0][0])`为A[0][0]的起始地址1000,`2*4*2`表示前两行共8个元素,每个元素占2个字节,一共需要16个字节的存储空间,`2*2`表示数组A中前两行共4个元素,每个元素中的第二个字节需要跳过前面的第一个字节,因此需要再加上2个字节的偏移量。
计算得到:
```
LOC(A[2][2]) = 1000 + (2*4*2) + (2*2) = 1028
```
因此,元素A[2][2]的第一个字节地址是1028。
相关问题
1.假设有二维数组A6*8,每个元素用相邻的8个字节存储,存储器按字节编址。已知A的起始存储位置(基地址)为2000,计算: (1)(10分)数组A的体积(存储量); (2)(10分)数组A的最后一个元素a57的第一个字节的地址; (3)(10分)按行存储时,元素a14的第一个字节的地址; (4)(10分)按列存储时,元素a47的第一个字节的地址。
1. (1) 数组A的体积为6*8*8=384字节。
(2) 数组A最后一个元素a57的第一个字节的地址为: 2000 + 5*8*8 + 6*8 - 8 = 2744。
(3) 按行存储时,元素a14的第一个字节的地址为: 2000 + 1*8*8 + 3*8 = 2032。
(4) 按列存储时,元素a47的第一个字节的地址为: 2000 + 6*8*8 + 3*8 + 6*8 = 2544。
设有二维数组a[6][8],每个元素占相邻的4个字节,存储器按字节编址,已知a的起始地址是1000,试计算: ①数组a的最后-个元素a[5][7]起始地址; ②按行序优先时,元素a[41[6]起始地址; ③按行序优先时,元素a[4][6]起始地址。
①数组a的最后一个元素a[5][7]起始地址可以通过以下计算得出:
a[5][7]的地址 = 1000 + 每个元素占相邻的4个字节 × 每行的元素个数 × (5-1) + 每个元素占相邻的4个字节 × (7-1)
= 1000 + 4 × 8 × 4 + 4 × 6 = 1232
所以,数组a的最后一个元素a[5][7]起始地址为1232。
②按行序优先时,元素a[4][6]起始地址可以通过以下计算得出:
a[4][6]的地址 = 1000 + 每个元素占相邻的4个字节 × (4 × 8 + 6)
= 1000 + 4 × 34 = 1136
所以,按行序优先时,元素a[4][6]起始地址为1136。
③按行序优先时,元素a[4][6]起始地址可以通过以下计算得出:
a[4][6]的地址 = 1000 + 每个元素占相邻的4个字节 × (4 × 8 + 6)
= 1000 + 4 × 34 = 1136
所以,按行序优先时,元素a[4][6]起始地址为1136。