How Do You Calculate the Memory Address of Temp[40,30,20] in a 3D Array?

  • Thread starter Thread starter acadian
  • Start date Start date
  • Tags Tags
    3d Array Memory
AI Thread Summary
To calculate the memory address of the 3D array Temp[40,30,20], the formula used is Address = BaseAddress + ((depthindex * col_size + colindex) * row_size + rowindex) * Element_Size. Given that the base address is 'm', element size is 4 bytes, column size is 100, and row size is 100, the depth index is 40, column index is 30, and row index is 20. The calculation results in Address = m + ( (40*100 + 30)*100 + 20 ) * 4 bytes, which simplifies to Address = m + 1612080. A correction is noted that since the array indexing starts at 1, adjustments to the formula are necessary to account for this. The discussion emphasizes the importance of correctly applying the indexing in the address calculation.
acadian
Messages
3
Reaction score
0

Homework Statement



The problem is finding the memory location of a three-dimentional array Temp. Each index of temp goes from 1 to 100 and each element stores 4 bytes. The array is setup such that the last index varies fastest, aka:

Temp[1,1,1], Temp[1,1,2], ... Temp[1,1,100], Temp[1,2,1]
Temp[1,100,100], Temp[2,1,1], ... Temp[2,1,2], ... Temp[2,1,100], Temp[2,2,1], ... Temp[100,100,100]

Find the address of the array Temp[40,30,20]

Homework Equations



I know that For a three-dimensional array, the formula to compute the offset into memory is the following:

Address = BaseAddress + ((depthindex*col_size+colindex) * row_size + rowindex) * Element_Size

Attempted work

for the array Temp[40,30,20]

Address = BaseAddress + ((depthindex*col_size+colindex) * row_size + rowindex) * Element_Size

BaseAddress = m
Element_size = 4 bytes
Col_size = 100
Row_size = 100

Depthindex = 40
Colindex = 30
Rowindex = 20

Address = m + ( (40*100 + 30)*100 + 20 ) * 4 bytes
= m + ( (4030)*100 + 20 ) * 4 bytes
= m + (403020) * 4 bytes
= m + 1612080


Am I on the right track, here?

Thanks so much!
 
Physics news on Phys.org
Looks ok to me.
 
Except that you're placing your first element off your starting address:

Address Temp[1,1,1]
Address = BaseAddress + ((1*100+1)*100+1)*4 = BaseAddress + 40404

we expected it to be BaseAddress, right?

Hint: that equation would be corrected if the indexes started at 0; as they start at 1 you need to... for each index in the formula
 

Similar threads

Replies
1
Views
2K
Replies
2
Views
3K
Replies
1
Views
9K
Replies
1
Views
2K
Back
Top