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

Array Address Calculations

The document explains how to calculate the address of elements in both 1-D and 2-D arrays using specific formulas. It provides examples for finding addresses in a 1-D array and in 2-D arrays using both row-major and column-major order. The formulas involve the base address, storage size of elements, and the indices of the elements, along with their respective lower bounds.

Uploaded by

ripesoy479
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)
6 views4 pages

Array Address Calculations

The document explains how to calculate the address of elements in both 1-D and 2-D arrays using specific formulas. It provides examples for finding addresses in a 1-D array and in 2-D arrays using both row-major and column-major order. The formulas involve the base address, storage size of elements, and the indices of the elements, along with their respective lower bounds.

Uploaded by

ripesoy479
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

Address of A[Index] = B + W * (Index - LB)

Where:

Index = The index of the element whose address is to be found (not the value of the
element).
B = Base address of the array.
W = Storage size of one element in bytes.
LB = Lower bound of the index (if not specified, assume zero).

Example: Given the base address of an array A[1300 ............ 1900] as 1020 and the
size of each element is 2 bytes in the memory, find the address of A[1700].

Solution:

Given:

Base address (B) = 1020


Lower bound (LB) = 1300
Size of each element (W) = 2 bytes
Index of element (not value) = 1700

Formula used:
Address of A[Index] = B + W * (Index - LB)
Address of A[1700] = 1020 + 2 * (1700 - 1300)
= 1020 + 2 * (400)
= 1020 + 800
Address of A[1700] = 1820

Calculate the address of any element in the 2-D array:


The 2-dimensional array can be defined as an array of arrays. The 2-Dimensional
arrays are organized as matrices which can be represented as the collection of rows
and columns as array[M][N] where M is the number of rows and N is the number of
columns.

To find the address of any element in a 2-Dimensional array there are the following
two ways-
1. Row Major Order
2. Column Major Order
1. Row Major Order:
Row major ordering assigns successive elements, moving across the rows and then
down the next row, to successive memory locations. In simple language, the
elements of an array are stored in a Row-Wise fashion.

To find the address of the element using row-major order uses the following formula:
Address of A[I][J] = B + W * ((I - LR) * N + (J - LC)) 
I = Row Subset of an element whose address to be found,

J = Column Subset of an element whose address to be found,

B = Base address,

W = Storage size of one element store in an array(in byte),

LR = Lower Limit of row/start row index of the matrix(If not given assume it as zero),

LC = Lower Limit of column/start column index of the matrix(If not given assume it
as zero),

N = Number of column given in the matrix.


Example: Given an array, arr[1.........10][1.........15] with base value 100 and the size of
each element is 1 Byte in memory. Find the address of arr[8][6] with the help of row-
major order.
Solution:
Given:

Base address B = 100

Storage size of one element store in any array W = 1 Bytes

Row Subset of an element whose address to be found I = 8

Column Subset of an element whose address to be found J = 6

Lower Limit of row/start row index of matrix LR = 1

Lower Limit of column/start column index of matrix = 1

Number of column given in the matrix N = Upper Bound - Lower Bound + 1

= 15 - 1 + 1

= 15
Formula:

Address of A[I][J] = B + W * ((I - LR) * N + (J - LC)) 


Solution:

Address of A[8][6] = 100 + 1 * ((8 - 1) * 15 + (6 - 1))

= 100 + 1 * ((7) * 15 + (5))

= 100 + 1 * (110)

Address of A[I][J] = 210

2. Column Major Order:


If elements of an array are stored in a column-major fashion means moving across
the column and then to the next column then it's in column-major order. To find the
address of the element using column-major order use the following formula:
Address of A[I][J] = B + W * ((J - LC) * M + (I - LR)) 
I = Row Subset of an element whose address to be found,

J = Column Subset of an element whose address to be found,

B = Base address,

W = Storage size of one element store in any array(in byte),


LR = Lower Limit of row/start row index of matrix(If not given assume it as zero),

LC = Lower Limit of column/start column index of matrix(If not given assume it as


zero),

M = Number of rows given in the matrix.


Example: Given an array arr[1.........10][1.........15] with a base value of 100 and the
size of each element is 1 Byte in memory find the address of arr[8][6] with the help of
column-major order.
Solution:
Given:

Base address B = 100

Storage size of one element store in any array W = 1 Bytes

Row Subset of an element whose address to be found I = 8

Column Subset of an element whose address to be found J = 6

Lower Limit of row/start row index of matrix LR = 1

Lower Limit of column/start column index of matrix = 1

Number of Rows given in the matrix M = Upper Bound - Lower Bound + 1

= 10 - 1 + 1

= 10
Formula: used

Address of A[I][J] = B + W * ((J - LC) * M + (I - LR))

Address of A[8][6] = 100 + 1 * ((6 - 1) * 10 + (8 - 1))

= 100 + 1 * ((5) * 10 + (7))

= 100 + 1 * (57)

Address of A[I][J] = 157 

You might also like