从基地址查找位置
find location from base address
所以我的计算机科学教授决定问我们一个问题,但没有给出如何找到答案的指导。题目如下:
计算以下元素的位置,其中基地址为 FFFFFBACD:
A[4][6]、A[5][5]、A[2][7]
该数组声明为 int [][]= new int [8][10]
他并没有要求我们编写任何程序,而只是找到位置。我遇到的问题是基地址看起来不对,我不知道如何进行计算才能找到答案。任何指导将不胜感激!!
假设每个整数都是 4 个字节,那么元素 [0][0] 位于地址 FFFFFBACD
。
下一个元素是[0][1],距离为4个字节,意思是:FFFFFBAD1
.
每个 "row" 总共有 10 个元素,因此有 40 个字节。因此 [1][0] 的地址是 FFFFFBACD + 40 字节 = FFFFFBAF5
因此,[4][6]将从起始地址算起40*4 + 5*4字节:FFFFFBB85
.
(请注意,此处行数为 4,每行乘以 40 个字节,第五行中的元素数为 6,每个元素长 4 个字节 - 这些是乘以 4 的不同原因)。
使用这个逻辑,尝试找到其他地址。应该没那么难。
所以我的计算机科学教授决定问我们一个问题,但没有给出如何找到答案的指导。题目如下:
计算以下元素的位置,其中基地址为 FFFFFBACD: A[4][6]、A[5][5]、A[2][7] 该数组声明为 int [][]= new int [8][10]
他并没有要求我们编写任何程序,而只是找到位置。我遇到的问题是基地址看起来不对,我不知道如何进行计算才能找到答案。任何指导将不胜感激!!
假设每个整数都是 4 个字节,那么元素 [0][0] 位于地址 FFFFFBACD
。
下一个元素是[0][1],距离为4个字节,意思是:FFFFFBAD1
.
每个 "row" 总共有 10 个元素,因此有 40 个字节。因此 [1][0] 的地址是 FFFFFBACD + 40 字节 = FFFFFBAF5
因此,[4][6]将从起始地址算起40*4 + 5*4字节:FFFFFBB85
.
(请注意,此处行数为 4,每行乘以 40 个字节,第五行中的元素数为 6,每个元素长 4 个字节 - 这些是乘以 4 的不同原因)。
使用这个逻辑,尝试找到其他地址。应该没那么难。