[go: up one dir, main page]

0% found this document useful (0 votes)
909 views4 pages

Row-Column Major Address

The document discusses row major order and column major order for calculating the address of elements in a two-dimensional array stored in memory. It provides the formulas for calculating the address based on the base address, width of each element, and the row and column indexes of the element. It also gives some examples of using the formulas to calculate addresses of elements for arrays stored in row major and column major order.

Uploaded by

Vinod Srivastava
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
909 views4 pages

Row-Column Major Address

The document discusses row major order and column major order for calculating the address of elements in a two-dimensional array stored in memory. It provides the formulas for calculating the address based on the base address, width of each element, and the row and column indexes of the element. It also gives some examples of using the formulas to calculate addresses of elements for arrays stored in row major and column major order.

Uploaded by

Vinod Srivastava
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

www.vinodsrivastava.

com/Maths

Address Calculation
Row Major Order :
Address of A[R][C]=BA+W[(R-LBR)*N+(C-LBC)]
Column Major Order :
Address of A[R][C]=BA+W[(I-LBR)+(J-LBC)*M]
Where : BA = Base Address W=Size of elements I,J=Find or determine the location LBR=Lower Bound of
row N= Number of columns LBC=Lower bound of column

LBR & LBC=0 and UBR =N and UBC=M : if 2- DEMENSIONAL ARRAY IS IN THE FORM OF
A[N][M]
FOR EXAMPLE -> A[20][30]

BUT IF 2- DEMENSIONAL ARRAY IS IN THE FORM OF A[LBR..N][LBCLBCM] FOR


EXAMPLE -> A[2..20][4..30]

M=UBC LBC+1;

N=UBR - LBR+1;

Solved Examples
A double dimension array DA[20][40] is stored in computers main storage. Every element of DA
requires 8 bytes of memory. If the base address of DA is 1000 then calculate the address of
DA[20][30] when the array is stored as:
i)Row Major
ii)Column Major
N = 20, M = 40, BA = 2000, W = 8, R = 20, C = 30 LBC=0,LBR=0
Row Major:

Address of DA[R][C] =

BA + W * (R-LBR) * M + (C-LBC))

Address of DA[20][30]=

2000 + 8 * ((20-0) * 40 + (30-0))


=

Col Major:

8640

Address of DA[r][c]

= BA + W * (R-LBR) + (C-LBC)*N)

Address of DA[20][30]=

2000 + 8 * ((20-0) + (30-0)*20)


=

6960

Row Major/Column Major Address Calculation


A double dimension array DD[5..25][7..30] is stored in computers main storage. Every element of DD
requires 4 bytes of memory. If the base address of DD is 1000 then calculate the address of
DD[17][25] when the array is stored as: i)
Row Major
ii)
Column Major
lbr = 5, ubr = 25, N = ubr - lbr + 1 = 25 - 5 + 1 = 21
lbc = 7, ubc = 30, M = ubc - lbc + 1 = 30 - 7 + 1 = 24
Base = 1000, W = 4, r = 17, c = 25
Row Major: Address of DD[r][c]
=
Base + W * ((r - lbr) * M + (c - lbc))
Address of DA[17][25]
=
1000 + 4 * ((17 - 5) * 24 + (25 - 7))
=
2224
Col Major:
Address of DD[r][c]
=
Base + W * ((r - lbr) + (c - lbc) * N)
Address of DA[17][25]
=
1000 + 4 * ((17 - 5) + (25 - 7) * 21)
=
2560
A double dimension array MAT[20][25] is stored in computers main storage as row wise. If the
address of MAT[24][8] is 3932 and address of MAT[33][21] is 4884, then find the base address, width
(W) and also calculate the address of MAT[27][19].
N = 40, M = 25
Base + W * (24 * 25 + 8) = 3932
Or, Base + 608 * W = 3932 (1)
Base + W * (33 * 25 + 21) = 4884
Or, Base + 846 * W = 4884 (2)
Subtracting (1) from (2)
Base + 846 * W = 4884
Base + 608 * W = 3932
238 * W = 952
W = 952 / 238 = 4
Substituting the value of W in (1)
Base + 4 * 608 = 3932
Base = 3932 - 2432 = 1500
Address of MAT[27][19]

= 1500 + 4 * (27 * 25 + 19) = 4276

A double dimension array MAT[20][30] is stored in computers main storage as column major. If the
address of address of MAT[15][23] is 4850 and address of MAT[12][18] is 4232, then find the base
address, width (W) and also calculate the address of MAT[16][25].
ROW = 20, COL = 30
Base + W * (15 + 23 * 20) = 4850
Base + W * (12 + 18 * 20) = 4232
Subtracting (2) from (1)
Base + 475 * W = 4850
Base + 372 * W = 4232
103 * W = 618
W = 618 / 103 = 6
Substituting the value of W in (1)
Base + 6 * 475 = 4850
Base = 4850 - 2850 = 2000

Or, Base + 475 * W = 4850


Or, Base + 372 * W = 4232

(1)
(2)

Address of MAT[16][25] = 2000 + 6 * (16 + 25 * 20) = 5096


C++ 12 @ VKS-Learning Hub

Page 2

Row Major/Column Major Address Calculation


Try Yourself
1. An array x[8][20] is stored in the memory with each element requiring 2 bytes of storage. If the base
address of the array is 2500, calculate the location of x[5][5] when the array x is stored using the column
major order and row major order.
2. An array Arr[1..20][1..20] is stored in the memory with each element requiring 4 bytes of storage. If the
base address of array Arr is 2000, determine the location of Arr[15][9] when the array Arr is stored in (1)
Row wise and (2) Column wise.
3. An array MAT[30][10] is stored in the memory row wise with each element
occupying 8 bytes of memory. Find out the base address and the address of the element MAT[15][5], if
the location of MAT[5][7] is stored at the address 3000.
4. An array MAT[20][25] is stored in the memory with each element requiring 2 bytes of storage. If the base
address of MAT is 4000 MAT[[12][8] when the array stored in (i) RMO and (ii) CMO
5. An array ARR[15][20] is stored in the memory, along the row with each element occupying 4 bytes . Find
out the base address and the address of the element ARR[3][2] if the element ARR[5][2] is stored at the
address 1500.
6.

Each element of an array Data[20][50] required 4 bytes of storage, Base address of data is 2000,
determine the location of Data[10][10] when the array is stored as (a) row major (b) column major

7. An array A[11][21] is stored in the memory with each element requiring 2 bytes of storage. If the base
address of array in memory is 300, determine the location of a[5][31] when the array is A stored by (i)
Row major (ii) Column major
8.

An array VAL[1....15][1...10] is stored in the memory with each element requiring 4 bytes of storage. If
the base address of array VAL is 1500, determine the location of VAL[12][9] when the array VAL is stored
(i)row-wise (ii)column-wise

9.

An array ARR[15][35] is stored in the memory along the column with each of its elements occupying 8
bytes. Find out the bas address and the address of an element Arr[2][5], if the location Arr[5][10] is stored
at the address 4000.

10. An array Arr[35][15] is stored in the memory along the row with each of its elements occupying 4 bytes.
Find the bas address and the address of an element Arr[20][5], if the location Arr[2][2] is stored at the
address 3000.
11. An array arr[15][20] is stored in the memory along the row with each element occupying 4 bytes. Find out
the base address and address of the element arr[3][2], if the element arr[5][2] is stored at the address
1500.
12. An array MAT[30][10] is stored in the memory column wise with each element occupying 8 bytes of
memory. Find out the bas address and the address of element MAT[5][7] is stored at the address 1000.
13. If an array B[11][8] is stored as column wise and B[2][2] is stored at 1024 and B[3][3] at 1084, find the
address of B[5][3] and B[1][1].

C++ 12 @ VKS-Learning Hub

Page 3

Row Major/Column Major Address Calculation


14. An array Arr[50[100] is stored in the memory along the row with each element occupying 2 bytes. Find
out the address of the location ARR[20][50] if location of Arr[20][30] is 1350.
15. An array x[30][10] is stored in the memory with each element requiring 4 bytes of storage. If the base
address of x is 4500, find out memory locations of x[12][8] and x[2][4], if the content is stored along the
row.
16. An array ARR[15][35] is stored in the memory along the column with each of its elements occupying 8
bytes. Find out the base address and the address of an element ARR[2][5] , if the location is stored at the
address 4000
17. An array X[15][10] is stored in memory with each element requiring 2 bytes of storage. If the base
address of array is 2000, calculate the location of X [7][8] when the array is stored by (1) row major order
(2) column major order.
18. X [1..6][1.10] is a two dimensional array. The first element of the array is stored at
Location 100. Each element of the array occupies 6 bytes. Find the memory location of X[2][4] when (i)
array is stored row wise. (ii)array is stored column wise
19. Each element of an array A[-20..20,10..35] requires one byte of storage. If the array is stored in column
major order beginning location 500, determine the location of A[0,30].
20. An array S[35][15] is stored in the memory along the row with each of its elements occupying 4 bytes.
Find out the memory location for the element S[20][5], if an element S[2][2] is stored at the memory
location 3000.
21. Given the two dimensional array a[10][20] base address of a is 100 and width of each element is 4
bytes. Find the location of a[8][15] when the array is stored as column-wise and row-wise
22. An array A[-2..8][-2..5] is stored in the memory along the column with each element occupying 4 bytes.
Find out the address of the element A[3][2].

C++ 12 @ VKS-Learning Hub

Page 4

You might also like