calculation of address elements for matrices stored by column
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
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