Baixe o app para aproveitar ainda mais
Prévia do material em texto
Organização de Computadores I Capítulo 3 - Representação de dados na memória 3. Representação de Dados na Memória RAM .......................................................................................... 2 3.1- Caracteres ........................................................................................................................................ 2 3.2- Números Inteiros de Simples Precisão ............................................................................................ 2 3.3- Números Inteiros de Dupla Precisão ou Inteiro Longo ................................................................... 3 3.4- Números Reais de Simples Precisão ................................................................................................ 3 3.5- Números Reais de Dupla Precisão ................................................................................................... 5 3.6- Memória de Vídeo............................................................................................................................ 6 Cap. 3 – Representação de dados na Memória 2 3. Representação de Dados na Memória RAM Os dados que podem ser representados na memória RAM do computador, podem ser classificados em: caracteres, números inteiros e números reais. Cada tipo de dado é armazenado de uma maneira especial e consome uma quantidade específica de memória. 3.1- Caracteres Consomem 1B de memória. - Todos os caracteres representáveis na memória foram codificados em uma tabela denominada Tabela ASCII (American Standard Code Interchange Information). Originalmente a Tabela ASCII possuía apenas 128 códigos que representavam o alfabeto, os caracteres de pontuação e alguns caracteres de controle do idioma inglês. Atualmente, além dos 128 códigos originais, possui mais 128 códigos adicionais para um conjunto de caracteres denominado caracteres estendidos. Assim, cada tecla do teclado tem um código ASCII associado a ela, de modo que, quando uma tecla é digitada, uma posição de memória ou 1 B da memória será preenchido com o seu código correspondente. A Tabela 3.1 mostra os códigos binário, decimal e hexadecimal de alguns caracteres da Tabela ASCII. A Tabela ASCII padrão para o idioma inglês é a tabela 437 (na BIOS). Porém, outras tabelas podem ser configuradas para melhor se adaptarem ao país onde o micro está sendo utilizado. Desse modo, os códigos dos caracteres podem variar. Os códigos ASCII associados às teclas do teclado, também podem variar conforme o tipo de teclado que estiver sendo usado. A Tabela 3.2, resume alguns exemplos de Páginas de Códigos e Código de Teclado, conforme o país. A configuração do País, do Teclado e da Página de Código a serem usados no ambiente do Prompt, é feita adicionando linhas de comando nos arquivos de configuração do, CONFIG.nt e AUTOECEX.nt. 3.2- Números Inteiros de Simples Precisão Ocupam 2B de memória. O primeiro bit do primeiro Byte, é usado para armazenar o sinal do número, que será 0, se o número é positivo (+) e 1, se o número é negativo (-) . [s][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ] s= 0, se o número é positivo; s= 1, se o número é negativo. Os bits restantes são preenchidos com o valor do número convertido para a base 2( formato binário). Caracter Código Binário Código decimal Código Hexa $ 00100100 36 24 A 01000001 65 41 5 00110101 53 35 « 10101110 174 AE ± 11110001 241 F1 Tabela 3.1- Caracteres da Tabela ASCII. País, Região ou Idioma Código do País Código do Teclado Página de Código Página Alternativa EUA 001 us 437 850 América Latina 003 la 850 437 Brasil 055 br 850 437 Portugal 351 po 850 860 Reino Unido 044 uk 437 850 Tabela 3.2- Páginas de Códigos e Códigos de Teclado Cap. 3 – Representação de dados na Memória 3 Limitação: Como o valor do número inteiro é armazenado utilizando os 15 bits restantes, teremos que: o maior inteiro positivo, será: 01111111 11111111 ou +32.767 = 2 15 -1 o menor inteiro negativo,será: 11111111 11111111 ou - 32.768 = -2 15 De todos os 2 15 códigos diferentes, se subtrai 1, porque na notação binária com sinal, o número 0 (zero) possui duas representações equivalentes, ou seja, 00000000 00000000 representará +0; e 10000000 00000000 representará -0. No caso do limite negativo, o valor é obtido convertendo a forma Sinal & Magnitude indicada acima, para outra forma, denominada Complemento de Dois, resultando 10000000 00000000. Para maiores detalhes sobre esta forma de representação, veja a Leitura Complementar indicada no final desta seção. Exemplo 6: Representar na memória o inteiro -17 Primeiro, convertemos sua magnitude 17 na base dois: 17 = 1 x 2 4 + 0 x 2 3 + 0 x 2 2 + 0 x 2 1 + 1 x 2 0 . Logo, 17 = 100012. Este resultado pode ser obtido aplicando-se a regra prática, que consiste em dividir 17 sucessivamente por 2 até se obter quociente final 1. Tomando-se o último quociente e os restos das divisões anteriores, teremos os dígitos da conversão. 17I 2 1 8I 2 0 4I 2 0 2I 2 0 1 Finalmente o inteiro -17 será representado na memória, na forma: [1][0][0][0][0][0][0][0] [0][0][0][1][0][0][0][1] 3.3- Números Inteiros de Dupla Precisão ou Inteiro Longo Ocupam 4B de memória. Da mesma forma, o primeiro bit é usado para o sinal, e os 31 bits restantes para armazenar o valor do número na base dois. [s][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ] Limitação: Neste caso, o valor do número inteiro será armazenado usando 31 bits. Portanto: o maior inteiro longo será 2 31 -1 = + 2.147.483.647 o menor inteiro longo será -2 31 = - 2.147.483.648 3.4- Números Reais de Simples Precisão Ocupam 4B de memória. A representação de números reais na memória, também é denominada Representação em Ponto Flutuante. O número é inicialmente convertido para a base dois e escrito na forma de potência, F x 2 E , onde o fator F é a fração ou mantissa, e E é o expoente ou característica. A mantissa é sempre escrita na forma normalizada, ou seja, ela deverá ser sempre um valor menor que 1, com o 1 o . dígito após o ponto decimal diferente de zero, ou seja, 0,1xxxxxxx. O expoente E pode ser Polarizado, ou seja, o valor 127 é adicionado ao expoente verdadeiro para ser armazenado, em simples precisão. O expoente ou característica é um valor inteiro armazenado no 1 o . Byte; e a fração ou mantissa é armazenada nos 3 Bytes restantes. Cap. 3 – Representação de dados na Memória 4 [sc][ ][ ][ ][ ][ ][ ][ ] [sn][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ] Característica Mantissa 8 bits 24 bits O primeiro bit do 1 o . Byte contém o sinal da Característica (sc); e o 1 o . bit do 2 o . Byte contém o sinal da Mantissa ou do número (sn). Esta forma tem apenas uma conveniência didática. A forma correta de representação de reais memória, conforme o padrão IEEE754, é: Precisão Simples - Padrão IEEE 754: 32 bits: Sinal(1), Exp.(8), Mant. (23) [sn] [ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ] Nesta forma, o 1o . bit armazena o sinal do número ou da Mantissa, o 2 o . bit armazena a característica ou expoente Polarizado e os 23 bits restantes são destinados à Mantissa. Limitações: Como a Característica é um inteiro que ocupa os 7 bits restantes do 1 o . Byte, seu valor verdadeiro está entre -(2 7 ) e (2 7 -1), ou seja, entre -128 e 127. Pela explicação anterior, este número é o expoente E da representação F x 2 E . Portanto, Menor expoente: -(2 7 ) = -128. Logo, o menor real será 2 -128 = 0,29 x 10 -38 ; Maior expoente: 2 7 -1 = 127. Logo, o maior real será 2 127 = 1,7 x 10 38 . - <-----------------|------------------| | |=============|----------- + 0 0,29x10 -38 1,7x10 38 O número máximo de decimais que pode ser obtido com esta representação, também denominado precisão, é 6 decimais. Exemplo 7: Representar na memória o real +20,6875 Se o número pudesse ser representado ma memória na base 10, bastaria reescrevê-lo na forma de potência, com a mantissa normalizada, como: + 20,6875 = + 0,206875 x 10 2 = + 0,206875 E +2 A Característica ou Expoente seria +2, e a Mantissa ou fração seria +0,206875. Porém, o número deve ser representado na memória na base 2 e assim, deveremos efetuar inicialmente sua conversão para a base 2: Conversão da Parte Inteira: Dividimos a parte inteira sucessivamente por 2 até obtermos o quociente igual a 1. Assim, o último quociente e os restos das divisões anteriores, constituem a representação binária da parte inteira. 20 | 2 0 10| 2 0 5| 2 1 2| 2 0 1 Logo, 20 = 101002 Conversão da Parte Fracionária: Multiplicamos a parte fracionária por 2 e anotamos a parte inteira do resultado, como o 1 o . dígito da conversão. Tomamos a parte fracionária do resultado e repetimos o processo, obtendo o 2 o . dígito da conversão. Prosseguimos até que o resultado seja 1,0. Então a conversão foi exata e está terminada. Cap. 3 – Representação de dados na Memória 5 0,6875 x 2 = 1,375 0,375 x 2 = 0,75 0,75 x 2 = 1,5 0,5 x 2 = 1,0 Logo, 0,6875 = 0,10112 Assim, +20,6875 = +10100,10112 . Reescrevendo este número na forma de potência, com a mantissa normalizada teremos: +20,6875 = +0,101001011 E+101 Com isto temos que a Característica vale +101 ou 10000100 Polarizado (5 + 127) e a Mantissa vale 0.101001011, e assim podemos representar o número na memória na forma correta: [0] [1][0][0][0][0][1][0][0] [1][0][1][0][0][1][0] [1] [1][0][0][0][0][0][0][0] [0][0][0][0][0][0][0] 0 10000100 10100101100000000000000 Em hexadecimal, converte-se o sinal e o expoente (polarizado) como um campo e a mantissa como outro. Assim, ficaria: 084 52C000 Nota: Na conversão da parte fracionária na base 2, pode ocorrer que: a) a partir de determinada multiplicação, notamos que os resultados estão se repetindo. Neste caso, a conversão não é exata e atingimos uma dízima periódica, cujo período é o conjunto de dígitos que se repete. Assim, preenchemos todos os bits da Mantissa repetindo o período da dízima tantas vezes quantas necessário. b) os resultados não se repetem. Neste caso também a conversão não é exata e devemos prosseguir até que tenhamos dígitos suficientes para preencher todos os bits da Mantissa. Obs.: Na realidade, o zero(0) antes do ponto decimal e o primeiro 1, após o ponto não são armazenados. Com isto, a mantissa sempre terá 1 bit a mais. O expoente geralmente é armazenado no formato: excesso de 127 ( valor real do expoente + 127), ou expoente Polarizado. Representações especiais: Sinal Exp. Pol. Mantissa Zero S 00000000 0 + -infinito S 11111111 0 Não Norm S 00000000 dif de 0 NaN S 11111111 dif de 0 3.5- Números Reais de Dupla Precisão Ocupam 8B de memória. No Padrão IEEE 754, utilizam-se 8 Bytes (64 bits) de memória, sendo 1 bit de sinal, a Característica com 11 bits e a Mantissa 52 bits. Fica como exercício para o leitor, determinar neste caso, os limites máximo e mínimo para os reais. O maior real será: ............................................... O menor real será: .............................................. As linguagens de programação ainda oferecem outras formas de representação de reais em ponto flutuante na memória, de modo a expandir o limite máximo dos números reais com que se pode operar. As linguagens Pascal e Fortran, permitem trabalhar com números reais no formato extended. Neste formato, os números reais são representados utilizando-se 10 Bytes ou 80 bits, sendo 15 bits para o expoente e 65b Precisão Estendida: Padrão IEEE 754 (80 bits): Sinal(1); Exp.(15), Mant.(64) Cap. 3 – Representação de dados na Memória 6 para a mantissa, de forma que o maior real que pode ser representado é equivalente a 1.1 x 10 4932 . Na linguagem Pascal, os reais de dupla precisão, são representados utilizando-se 8 Bytes ou 64 bits, sendo 11 bits para o expoente e 53 bits para a mantissa, o que possibilita precisão de 15 dígitos significativos. Desafio: como obter o resultado 1.1 x 10 4932 ? Leitura Complementar: Capítulo 7. Representação de Dados, Referência 1. 3.6- Memória de Vídeo Em geral, as Controladoras dos Monitores de vídeo trabalham com 16, 256, 65.536 , 16.777.216 de cores ou mais. Isto exige uma considerável quantidade de memória, pois para armazenar a cor de cada pixel da tela será necessário uma quantidade de memória tanto maior quanto maior for a Resolução Gráfica do Monitor e o número de cores. As Controladoras de Vídeo externas, possuem memória exclusiva de vídeo. Quando se usa parte da memória RAM para o vídeo, denominada UMA (Unified Memory Architeccture) torna o custo mais barato. A Tabela 3.3 resume a quantidade de memória necessária por pixel, para os vários tipos de cores: Modo de Cor Nr. de cores Potência Bits / pixel Bytes / pixel cores de 4 bits 16 16 = 2 4 4 b/pixel 0.5 B/pixel cores de 8 bits 256 256=2 8 8 b/pixel 1 B/pixel cores de 16 bits 65.536 65536=2 16 16 b/pixel 2 B/pixel cores de 24 bits 16.777.216 16777216=2 24 24 b/pixel 3 B/pixel cores de 32 bits 4.294.967.296 2 32 32 b/pixel 4 B/pixel Tabela 3.3- Consumo de memória por pixel para os vários modos de cores. Com os dados da Tabela 3.3, podemos calcular a memória de vídeo necessária para um Monitor operar no modo gráfico, com uma resolução gráfica dada, através da fórmula: Exemplo 8: Calcular a memória necessária para um monitor SXGA de cores de 32 b operar no modo gráfico, com resolução máxima padrão. Para o monitor SXGA padrão, a resolução é R = 1400x1050 pixels. Cores de 32 b, consomem 4 B/pixel. Logo, M = 1400 x 1050 x 4 B = 5880000 B = 5,61 MB Exemplo 9 - Aplicação em fotografias digitais: Imagine que uma pessoa deseja publicar uma foto em tamanho A4(210x297 mm). A revista exige resolução de 300 DPI(dots por polegada). Calcule com que resolução, em megapixels, a imagem deve ser feita. 210 x 297 mm = 21 x 29,7 cm = 21/2,54 x 29,7/2,54 pol = 8,27 x 11,7 pol. Com a revista exige 300 dpi, teremos: (8,27x300) x (11,7x300) dots ou pixels= 2481 x 3510 pixels = 8.708.310 pixels ~= 8,7 megapixles M = R x (Bytes/pixel) Cap. 3 – Representação de dados na Memória 7 Cap 3 – Representação de dados na Memória Exercício de Fixação Nr. 03 1 a . Parte: Responda as questões a seguir, de maneira sucinta e objetiva. 1. Quantos Bytes de memória são necessários para representar um caracter ? 2. Quantos caracteres possui a Tabela ASCII atualmente ? 3. Internamente na memória, os caracteres são armazenados na forma decimal, binária ou hexadecimal ? 4. Porque existem diferentes tabelas de caracteres disponíveis ? 5. Os números inteiros de simples precisão utilizam quantos bytes de memória para sua representação ? 6. Qual o maior número inteiro de dupla precisão que pode ser representado ? 7. Qual o maior número real de simples precisão que pode ser representado ? 8. Qual a vantagem que oferece a representação de números reais em dupla precisão ? 9. Qual o maior número real que pode ser representado no formato extended ? 10. Quais as linguagens citadas no texto que possibilitam a representação de números reais no formato extended ? 2 a . Parte: Resolva os exercícios a seguir, indicando todos os cálculos necessários. 1. Represente na memória RAM os inteiros: -37 e 42 2. Represente na memória RAM os reais a seguir. Use o padrão IEEE 754 e dê o equivalente em Hexa. a) -18.75 b) 11.62 c) -3.85 d) 0.03125 e) -15.15625 3. Em determinado computador, os números inteiros são representados na memória usando 12 b. Desse modo, qual é o maior inteiro que pode ser representado ? 4. Certo computador armazena os números reais na memória, de tal forma que a Característica ocupa 10 bits. Calcule o maior e o menor real que podem ser representados na memória deste computador. 5. Com números reais de Simples Precisão, é possível representar na memória o resultado do fatorial de 35 ? Porque ? 6. Calcule o número de bits que deve possuir a Característica para que seja possível representar na memória de um computador o resultado de 57 ! (fatorial de 57). 7. Calcule a memória necessária para um monitor SVGA padrão operar no modo gráfico com cores de 16 b. 8. Calcule a memória necessária para um monitor XGA padrão operar no modo gráfico de 16 milhões de cores. 9. Calcule a memória necessária para um monitor XGA, com resolução de 1280 x 1024, operar no modo gráfico com cores de 24 b. 10. Calcule a memória necessária para um monitor XGA, com resolução gráfica de 1024 x 768, operar no modo gráfico com cores de 16 b. 11. Considere uma imagem digital feita com resolução de 1792x2048 pixels. Para ser impressa com 300 DPI, qual o tamanho máximo em polegadas? Quantos megapixels tem a imagem?
Compartilhar