We evaluate address of an element in a 2D array in 2 ways
- Column Major Order
- Row Major Order
Column Major Order
The Formula is:
LOC (A [J, K]) = Base (A) + w [M (K-1) + (J-1)]
So, What is the meaning of this above equation? Explain one by one,
LOC(A[J, K]) = is the location of the element in the Jth row and Kth column.
Base (A) = is the base address of the Array A.
w = is the number of bytes required to store single element of the array A.
M = is the total number of rows in the array.
J = is the row number of the element.
K = is the column number of the element.
So then go through the real time example,
Suppose, A[3,3] array elements are,
1 2 3 A = 1=> [10,20,30] 2=> [40,50,60] 3=> [70,80,90]
If we represent this array in column wise then
Array Indices = Elements = Address (Each element size is 4 bytes because "int") [1,1] = 10 = 1000 [2,1] = 40 = 1004 [3,1] = 70 = 1008 [1,2] = 20 = 1012 [2,2] = 50 = 1016 [3,2] = 80 = 1020 [1,3] = 30 = 1024 [2,3] = 60 = 1028 [3,3] = 90 = 1032
Suppose we have to find the location of A [3, 2]. Then required values are:
Base(A) = 1000 w = 4 bytes (Because each elements belongs to integer type assign memory size) M = 3 (number of rows) J = 3 (row number of element) K = 2 (column number of element)
Now put these values in the above formula as below:
LOC (A [J, K]) = Base(A) + w [M (K-1) + (J-1)] LOC (A [3, 2]) = 1000 + 4 [3 (2-1) + (3-1)] = 1000 + 4 [3 * 1 + 2] = 1000 + 4 [5] = 1000 + 20 = 1020 (80 is a Element and actual address is 1020).
Now,
Row Major Order
The formula is
LOC (A [J, K]) = Base (A) + w [N (J-1) + (K-1)]
So, What is the meaning of this above equation? Explain one by one,
LOC(A[J, K]) = is the location of the element in the Jth row and Kth column.
Base (A) = is the base address of the Array A.
w = is the number of bytes required to store single element of the array A.
N = is the total number of columns in the array.
J = is the row number of the element.
K = is the column number of the element.
So then go through the real time example,
Suppose, A[3,3] array elements are,
1 2 3 A = 1=> [10,20,30] 2=> [40,50,60] 3=> [70,80,90]
If we represent this array in row wise then
Array Indices = Elements = Address (Element Size it's incremented) [1,1] = 10 = 1000 [1,2] = 20 = 1004 [1,3] = 30 = 1008 [2,1] = 40 = 1012 [2,2] = 50 = 1016 [2,3] = 60 = 1020 [3,1] = 70 = 1024 [3,2] = 80 = 1028 [3,3] = 90 = 1032
Suppose we have to find the location of A [3, 2]. Then required values are:
Base(A) = 1000 w = 4 bytes (Because each elements belongs to integer type assign memory size) N = 3 (number of columns) J = 3 (row number of element) K = 2 (column number of element)
Now put these values in the above formula as below:
LOC (A [J, K]) = Base(A) + w [N (J-1) + (K-1)] LOC (A [3, 2]) = 1000 + 4 [3 (3-1) + (2-1)] = 1000 + 4 [2 * 1 + 2] = 1000 + 4 [4] = 1000 + 16 = 1016 (50 is a Element and actual address is 1016).
If you find any issue and interested to rewrite it then contact us.