0% found this document useful (0 votes)
2K views20 pages

Address Calculation

The document discusses address calculation in single and two-dimensional arrays stored in memory. It provides formulas to calculate the address of an element in a single-dimensional array and in two-dimensional arrays stored in both row-major and column-major order. Examples are given to demonstrate calculating addresses of elements in arrays using the base address, element size, array bounds, and row and column subscripts.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2K views20 pages

Address Calculation

The document discusses address calculation in single and two-dimensional arrays stored in memory. It provides formulas to calculate the address of an element in a single-dimensional array and in two-dimensional arrays stored in both row-major and column-major order. Examples are given to demonstrate calculating addresses of elements in arrays using the base address, element size, array bounds, and row and column subscripts.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 20

Memory

ADDRESS CALCULATION IN AN
ARRAY
(DATA STRUCTURES)
Address Calculation in single (one)
Dimension Array
Address Calculation in single (one)
Dimension Array
• Array of an element of an array say “A[ I ]” is
calculated using the following formula:
• Address of A [ I ] = B + W * ( I – LB )
Where,
B = Base address
W = Storage Size of one element stored in the
array (in byte)
I = Subscript of element whose address is to be
found
LB = Lower limit / Lower Bound of subscript, if
not specified assume 0 (zero)
Address Calculation in single (one)
Dimension Array
Example: Given the base address of an
array B[1300…..1900] as 1020 and size of each
element is 2 bytes in the memory. Find the
address of B[1700].
Solution: The given values are:
B = 1020, LB = 1300, W = 2, I = 1700
Address of A [ I ] = B + W * ( I – LB )
= 1020 + 2 * (1700 – 1300)
= 1020 + 2 * 400
= 1020 + 800
= 1820 [Ans]
Address Calculation in Two-Dimensional
Array
• While storing the elements of a 2-D array in
memory, these are allocated contiguous
memory locations. Therefore, a 2-D array must
be linearized so as to enable their storage.
There are two alternatives to achieve
linearization:
• Row-Major
• Column-Major
Address Calculation in Two-Dimensional
Array
Address Calculation in Two-Dimensional
Array
• Row-Major (Row Wise Arrangement): In this
method, the elements of an array are filled up
row-by-row such that the first row elements are
stored first, then the second row and so on.
• Column-Major (Column Wise Arrangement): In
Column Major ordering, all the elements of the
first column are stored first, then the next column
elements and so on till we are left with no
columns in our 2-D array.
Address Calculation in Two-Dimensional
Array
Address Calculation in Two-Dimensional
Array
• Row Major System: The address of a location in Row Major System is
calculated using the following formula:

Address of A [ I ][ J ] = B + W * [ N * ( I – Lr ) + ( J – Lc ) ]

Where,
B = Base address
I = Row subscript of element whose address is to be found
J = Column subscript of element whose address is to be found
W = Storage Size of one element stored in the array (in byte)
Lr = Lower limit of row/start row index of matrix, if not given assume 0
(zero)
Lc = Lower limit of column/start column index of matrix, if not given
assume 0 (zero)
M = Number of row of the given matrix
N = Number of column of the given matrix
Address Calculation in Two-Dimensional
Array
Column Major System: The address of a location in Column Major System
is calculated using the following formula:

Address of A [ I ][ J ] = B + W * [( I – Lr ) + M * ( J – Lc )]

Where,
B = Base address
I = Row subscript of element whose address is to be found
J = Column subscript of element whose address is to be found
W = Storage Size of one element stored in the array (in byte)
Lr = Lower limit of row/start row index of matrix, if not given assume 0
(zero)
Lc = Lower limit of column/start column index of matrix, if not given
assume 0 (zero)
M = Number of row of the given matrix
N = Number of column of the given matrix
Address Calculation in Two-Dimensional
Array
Ques: There is an array x[20][30] stored in memory
along the row with each element occupying 4
bytes of memory. Find the address of X[7][9] if
he base address is 2000.
Soln: B=2000, W=4,I=7, J=9, M=20, N=30, Lr=0,
Lc=0
Address of A [ I ][ J ] = B + W * [ N * ( I – Lr ) + ( J –
Lc ) ]
Address of A [ 7][ 9]= 2000+ 4*[30*(7-0)+(9-0)]
= 2000+4*[219]=2876
Address Calculation in Two-Dimensional
Array
Ques: There is an array X[20][30] stored in memory
along the column with each element occupying 4
bytes of memory. Find the address of X[7][9] if
the base address is 2000.
Soln: B=2000, W=4,I=7, J=9, M=20, N=30, Lr=0,
Lc=0
Address of A [ I ][ J ] Column Major Wise = B + W *
[( I – Lr ) + M * ( J – Lc )]
Address of A [ 7][ 9]= 2000+ 4*[(7-0)+20*(9-0)]
= 2000+4*[187]=2748
Address Calculation in Two-Dimensional
Array
Important: Usually number of rows and columns of
a matrix are given ( like A[20][30] or A[40][60] )
but if it is given as A[Lr- – – – – Ur, Lc- – – – – Uc].
In this case number of rows and columns are
calculated using the following methods:
Number of rows (M) will be calculated as = (Ur –
Lr) + 1
Number of columns (N) will be calculated as = (Uc
– Lc) + 1
Address Calculation in Two-Dimensional
Array
Ques: An array X [10……….15, -2……………2] . Find
number of rows and columns.
Soln:
Number or rows say M = (Ur – Lr) + 1 = [15 – 10] +1
=6
Number or columns say N = (Uc – Lc) + 1 = [2 – (-2)]
+1 = 5
Address Calculation in Two-Dimensional
Array
Ques: An array X [-15……….10, 15……………40] requires
one byte of storage. If beginning location is 1500
determine the location of X [15][20].
Soln: As you see here the number of rows and
columns are not given in the question. So they are
calculated as:
Number or rows say M = (Ur – Lr) + 1 = [10 – (- 15)] +1
= 26
Number or columns say N = (Uc – Lc) + 1 = [40 – 15)]
+1 = 26
Address Calculation in Two-Dimensional
Array
(i) Column Major Wise Calculation of above equation
The given values are: B = 1500, W = 1 byte, I = 15, J =
20, Lr = -15, Lc = 15, M = 26
Address of A [ I ][ J ] = B + W * [ ( I – Lr ) + M * ( J – Lc )
]
= 1500 + 1 * [(15 – (-15)) + 26 * (20 – 15)]
= 1500 + 1 * [30 + 26 * 5]
= 1500 + 1 * [160]
= 1660 [Ans]
Address Calculation in Two-Dimensional
Array
(ii) Row Major Wise Calculation of above equation
The given values are: B = 1500, W = 1 byte, I = 15, J =
20, Lr = -15, Lc = 15, N = 26
Address of A [ I ][ J ] = B + W * [ N * ( I – Lr ) + ( J – Lc ) ]
= 1500 + 1* [26 * (15 – (-15))) + (20 – 15)]
= 1500 + 1 * [26 * 30 + 5]
= 1500 + 1 * [780 + 5]
= 1500 + 785
= 2285 [Ans]
Address Calculation in Two-Dimensional
Array
Ques: There is an array X [7……….30, 3………50]
stored in memory along the row with each
element occupying 4 bytes of memory. Find the
address of X[7][8] if the base address is 4000.
Soln: Number of rows say M = (Ur – Lr) + 1 = [30 –
7] +1 = 24
Number of columns say N = (Uc – Lc) + 1 = [50 – 3]
+1 = 48
Address Calculation in Two-Dimensional
Array
Row Major Wise Calculation of above equation
The given values are: B = 4000, W = 4 byte, I = 7, J = 8,
Lr = 7, Lc = 3, N = 48
Address of A [ I ][ J ] = B + W * [ N * ( I – Lr ) + ( J – Lc ) ]
= 4000 + 4* [48 * (7 – 7) + (8– 3)]
= 4000 + 4 * [48 * 0 + 5]
= 4000 + 4 * [5]
= 4000 + 20
= 4020 [Ans]
Address Calculation in Two-Dimensional
Array
Ques: There is an array X [4……….7, -1………3]
stored in memory along the row with each
element occupying 2 bytes of memory. Find the
address of X[6][2] if the base address is 100.
Soln: 126

You might also like