Calculation of Address Elements for Matrices Stored by Column.

1

Click here to load reader

description

Calculation of address elements for matrices stored by column. This document describes an algorithm for calculating the addresses of elements stored by column assuming a base address, starting from the idea of calculating the address elements for matrices stored by row. At the end we present a formulation for direct return of the element.

Transcript of Calculation of Address Elements for Matrices Stored by Column.

Page 1: Calculation of Address Elements for Matrices Stored by Column.

Cálculo do Endereço de Elementos para MatrizesArmazenadas por Coluna

Michel Alves dos Santos ∗

Março de 2010

Figura 1: Localização do elemento [i,j] na matriz A.

Partindo da idéia de cálculo do endereço de elementos para matrizes armazenadas por linhae adaptando a notação para o cálculo do endereço de elementos para matrizes armazenadas porcoluna e observando a figura localizada logo acima, teremos:

Location(A[i,j]) = Address of A[1,1] + (((j - 1)*m) + (i - 1))*ElementSize

Onde Location representa o nome da função que determina o endereço do elemento perten-cente ao array multidimensional; A o nome de variável ou instância desse array; i,j os índicesde localização que repectivamente significam linha e coluna; Address of o operador que retornao endereço de memória de uma determinada área, Address ofA[1,1] a operação que retorna oendereço de memória do primeiro elemento pertencente ao array multidimensional; m o númerode linhas do array multidimensional e finalmente ElementSize que nada mais é que o tamanhosingular da estrutura ou elemento que é armazenado em cada posição do array multidimensional.

Expandindo os cálculos feitos até o momento teremos:

Location(A[i,j]) = Address of A[1,1] + ((j - 1)*m)*ElementSize + (i - 1)*ElementSizeLocation(A[i,j]) = Address of A[1,1] + (j*m - m)*ElementSize + (i - 1)*ElementSize

Location(A[i,j]) = Address of A[1,1] + (j*m)*ElementSize - m*ElementSize + i*ElementSize - ElementSize

Generalizando o desenvolvimento da fórmula dada acima e especificando o endereço base doprimeiro elemento pertencente ao array multidimensional por Address of A[Rowb,Colb], sendoRowb a linha base de cálculo e Colb a coluna base de cálculo, teremos a seguinte especificação:

Location(a[i,j]) = Address of A[Rowb,Colb] + (j*m + i)*ElementSize - ((Colb*m) + Rowb)*ElementSize

∗Bacharelando em Ciência da Computação, Universidade Federal do Estado de Alagoas(UFAL). E-mails: [email protected], [email protected]. Disciplina: Teoria e Paradigmas de Linguagens de Progra-mação. Docente Responsável: Alcino Dall’Igna Júnior.

1