Baixe o app para aproveitar ainda mais
Prévia do material em texto
Computação Básica – carlacastanho@cic.unb.br Algoritmos e Programação de Computadores Disciplina: 116301 Profa. Carla Denise Castanho Prof. Marcio Victorino Universidade de Brasília – UnB Instituto de Ciências Exatas – IE Departamento de Ciência da Computação – CIC 1 Computação Básica – carlacastanho@cic.unb.br 2.3. Representação de Dados 2 Computação Básica – carlacastanho@cic.unb.br 3 Todos os tipos de dados são armazenados nos dispositivos de memória do computador (Registradores, RAM, HD, etc) e operados no processador (ULA) na forma de bits. Veremos aqui apenas alguns tipos mais comuns: • Números Naturais (ℕ) • Números Inteiros (ℤ) • Números Reais (ℝ) • Caracteres • Sons • Imagens (cores) •.... Representação de Dados no Computador Computação Básica – carlacastanho@cic.unb.br 4 •Números Naturais (ℕ) Os números naturais são representados naturalmente utilizando o sistema de numeração binário. As operações aritméticas de +, -, × e ÷ já foram estudadas. O computador consegue processar apenas dados representados com um número finito de bits. Ex.: Tipo em C tamanho faixa dinâmica (unsigned char) 8 bits 0 a 255 (unsigned short) 16 bits 0 a 65.535 (unsigned int) 32 bits 0 a 4.294.967.295 (unsigned long long int) 64 bits 0 a 18.446.744.073.709.551.615 Ex.: 100111002 = 15610 Representação de Dados no Computador Computação Básica – carlacastanho@cic.unb.br 5 • Realização das operações matemáticas usando o sistema binário. • Usa-se os mesmos algoritmos clássicos aprendidos para base 10 Aritmética Computacional Adição/subtração: Exatamente como base decimal (emprestar/vai 1s) 0011 0111 1100 0111 0110 0010 0100 + 0010 +1010 +1111 - 0110 - 0101 -0100 - 0010 0101 10001 11011 0001 0001 ? -0010 Multiplicação e Divisão: 0011 0111 10001001 |_110_ x 0010 x 1110 - 110 10110 0000 0000 001010 0011 0111 - 110 0000 0111 1000 +0000___ + 0111___ - 110 0000110 1100010 0101 Como representar o sinal? Computação Básica – carlacastanho@cic.unb.br 6 •Números Inteiros (ℤ) Existem várias formas de representação de números inteiros com sinal. As mais comuns são: Sinal e magnitude : Usa-se um símbolo específico para representar o sinal (-) ou O MSB indica apenas o sinal (1 negativo, 0 positivo) Complemento de 1 : A representação do número negativo é o inverso do positivo, isto é, troca-se 0 1 e 1 0 Complemento de 2 : O mais utilizado hoje em dia O MSB possui ponderação negativa. A representação do número negativo é o inverso do positivo + 1 Ou é o complemento/diferença para o maior número. Obs.: Complemento de 10 como representação de números decimais negativos Representação de Dados no Computador Computação Básica – carlacastanho@cic.unb.br 7 Sinal e magnitude Complemento de um Complemento de dois 000 = +0 000 = +0 000 = +0 001 = +1 001 = +1 001 = +1 010 = +2 010 = +2 010 = +2 011 = +3 011 = +3 011 = +3 100 = -0 100 = -3 100 = -4 101 = -1 101 = -2 101 = -3 110 = -2 110 = -1 110 = -2 111 = -3 111 = -0 111 = -1 Exemplos para números com 3 bits: Ex.: Em complemento de 2 Tipo em C tamanho faixa dinâmica (char) 8 bits -128 a 127 (short) 16 bits -32.768 a 32.767 (int) 32 bits -2.147.483.648 a 2.147.483.647 (long long int) 64 bits -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 Ex.: 100111002 = -10010 Representação de Dados no Computador Computação Básica – carlacastanho@cic.unb.br 8 Soma e subtração em Complemento de 2: Exatamente como base decimal (emprestar/vai 1s) descartando o carry out 0011 0111 1100 0111 0110 0010 + 0010 +1010 +1111 - 0110 - 0101 -0100 0101 10001 11011 0001 0001 1110 Facilidade de operações do complemento de dois - subtração usando adição de números negativos Overflow (resultado muito grande para a word finita do computador): Somar dois números de n bits pode produzir um número de n+1 bits. Obs.: 0101 = +5 1001 = -7 0110 = 6 + 0100 = +4 + 1010 = -6 - 1000 = -8 1001 ≠ 9 10011 ≠ -13 1110 ≠ 14 Note que o termo overflow não significa que um carry simplesmente “transbordou” (n de bits do resultado > n bits das parcelas) Mas sim que o resultado não “cabe” na faixa dinâmica de n bits!!! Aritmética Computacional Computação Básica – carlacastanho@cic.unb.br Multiplicação e Divisão inteira em complemento de 2 Os algoritmos clássicos apenas funcionam com números sem sinal. Logo devemos operar com os módulos dos operandos e ajustar o sinal do(s) resultado(s). Ajuste do sinal do resultado da multiplicação: Basta verificar se os sinais do multiplicando e do multiplicador são iguais ou diferentes, definindo assim o sinal do produto. Ajuste dos resultados da divisão: Precisamos definir o sinal do quociente e do resto. Dividendo = Quociente x Divisor + Resto 72 7 = 3 x 2 + 1 (-7) 2 -7 = (-3) x 2 + (-1) OU -7 = (-4) x 2 +1 Regra: Quociente: Mesma regra da multiplicação . Resto: Mesmo sinal do Dividendo. Aritmética Computacional 9 Computação Básica – carlacastanho@cic.unb.br 10 •Números Reais (ℝ) Já estudamos a forma de representar números fracionários utilizando a notação de ponto fixo no sistema binário. Ponto Fixo: 3,12510 = 11,0012 Esta forma pode ser combinada com as formas de representação de números negativos a fim de representar os números reais. Ex.: Em 8 bits: -3,12510 = 10011,0012 : sinal e magnitude -3,12510 = 11100,1112 : Complemento de 2 Problema: Dado uma sequência de bits é necessário saber de previamente a posição da casa binária (virgula)! Ex.: 100111002 = ? 1,00111002 = -1+0,125+0,0625+0,03125=-0,7812510 10011,1002 = -16+2+1+0,5 = -12,5 Representação de Dados no Computador Computação Básica – carlacastanho@cic.unb.br 11 •Números Reais A fim de padronizar a representação de números reais e permitir um aumento significativo da faixa dinâmica, representa-se os números usando ponto flutuante, que é baseada na notação científica normalizada (1º dígito diferente de 0): Ponto Fixo: -0,0023410 Ponto Flutuante: -2,34x10-3 Notação Científica: sinal, mantissa e expoente Nos computadores usamos a notação científica binária e a representação de sinal e magnitude. Ex.: -1,010x2-2 = -0,010102 = -0,312510 = -(1+0,25)x2 -2 Representação de Dados no Computador Computação Básica – carlacastanho@cic.unb.br Representação: - sinal(S), mantissa(M), expoente(E): (–1)S M 2E - mais bits para a mantissa fornece mais precisão - mais bits para o expoente aumenta a faixa dinâmica Padrão de representação emponto flutuante IEEE 754: - precisão simples: 32 bits Tipo em C (float) - precisão dupla: 64 bits Tipo em C (double) 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 s expoente Fração 1 bit 8 bits 23 bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 s expoente Fração 1 bit 11 bits 20 bits Fração (continuação) 32 bits Representação de Dados no Computador 12 Computação Básica – carlacastanho@cic.unb.br O bit “1” inicial da mantissa está implícito (aumenta a precisão em 1 bit) O expoente possui um off-set para facilitar os algoritmos de ordenação - Off-set de 127 para precisão simples e de 1023 para precisão dupla - Formato: (–1)sinal (1 + fração) 2(expoente – offset) Exemplos: - decimal: -0,75 - ponto fixo (sinal e magnitude): -0,112 = -1,1 2 -1 notação científica - ponto flutuante: expoente = 126 = 011111102 precisão simples IEEE: 1011 1111 0100 0000 0000 0000 0000 00002 0xBF400000 - decimal: 5,0 - ponto fixo (sinal e magnitude): 0101,02 = 1,01x2 2 notação científica - ponto flutuante: expoente = 129 = 100000012 precisão simples IEEE: 0100 0000 1010 0000 0000 0000 0000 00002 0x40A00000 13 Representação de Dados no Computador Computação Básica – carlacastanho@cic.unb.br 14 Dado o número em Ponto Flutuante IEEE754: 0xC1100000 qual o número decimal representado? 1100 0001 0001 0000 0000 0000 0000 0000 1 10000010 00100000000000000000000 Expoente = 130 - 127 = 3 Mantissa: 1,001 Logo: (-1)1 x 1,001 x 23 = - (1001.0) = -9,0 Obs.: Generalizando Ax10B=Yx2X=2X+Z onde B e X são inteiros. Representação de Dados no Computador Computação Básica – carlacastanho@cic.unb.br 15 Como representar 0? Precisão Simples Precisão Dupla Objeto Expoente Fração Expoente Fração 0 0 0 0 0 0 ≠0 0 ≠0 ±Número desnormalizado 1-254 1-2046 ±Número Ponto Flutuante 255 0 2047 0 ± 255 ≠0 2047 ≠0 NaN Qual a faixa dinâmica dos números representáveis em precisão simples e dupla? MAX_single: MIN_single: MAX_double: MIN_double: Representação de Dados no Computador Computação Básica – carlacastanho@cic.unb.br 16 Soma e subtração em IEEE 754: Procedimento idêntico às operações em Notação Científica base 10. - Converte-se o número com menor expoente para igualar ao expoente do maior e soma-se (subtrai-se) as mantissas Ex.: Decimal 5,25x102 + 1,5x10-1 = 5,25x102 + 0,0015x102 = 5,2515x102 (4 dígitos) = 5,251x102 Ex.: Binário 1,01x22 + 1,1x2-1 = 1,01x22 + 0,0011x22 = 1,01111x22 (4 bits) = 1,011x22 Aritmética Computacional Computação Básica – carlacastanho@cic.unb.br 17 Aritmética Computacional Multiplicação e Divisão em IEEE 754: Procedimento idêntico às operações em Notação Científica base 10: - Multiplica-se as mantissas e soma-se os expoentes ou - Divide-se as mantissas e subtrai-se os expoentes Ex.: Decimal 3,23x102 x 3,415x10-1 = 11,03045 x 101 (4 dígitos) = 1,103x102 Ex.: Binário 1,000x2-1 x (-1,110x2-2) =- 1,110000x2-3 (4 bits) = -1,110x2-3 Overflow: |resultado| > MAX : |resultado|=infinito Underflow: |resultado| < MIN : |resultado|=0,0 Computação Básica – carlacastanho@cic.unb.br Caracteres A representação de caracteres no computador é feita associando-se sequências de bits a cada caracter particular. Por necessidade de diálogos entre os diferentes computadores, foram criados diversos códigos objetivando a padronização. EBCDIC (Extended Binary Coded Decimal Interchange Code): Primeira tentativa de padronização da representação de caracteres. Criado pela IBM no início da década de 60 (usado até hoje em seus mainframes) Representa caracteres por códigos de 1 byte (8 bits). Representação de Dados no Computador ASCII (American Standard Code for Information Interchange): Criada por um comitê nacional (USA) em 1963 (revisado em 67 e 85). Define uma tabela de equivalência entre 7 bits e um símbolo (caracteres alfabéticos, maiúsculos e minúsculos, algarismos, caracteres especiais, símbolos gráficos, e caracteres de controle de terminal/impressora). Computação Básica – carlacastanho@cic.unb.br Tabela ASCII O conjunto de códigos ASCII original possui 128 símbolos (7 bits). Representação de Dados no Computador Os primeiros 32 são caracteres de controle de terminal/impressora Computação Básica – carlacastanho@cic.unb.br Tabela ASCII Representação de Dados no Computador Os 32 símbolos seguintes são caracteres de pontuação e algarismos Computação Básica – carlacastanho@cic.unb.br Tabela ASCII Representação de Dados no Computador Os 32 símbolos seguintes são as letras maiúsculas Computação Básica – carlacastanho@cic.unb.br Tabela ASCII Representação de Dados no Computador Os últimos 32 caracteres são as letras minúsculas Diferença entre A e a? Computação Básica – carlacastanho@cic.unb.br Representação de Dados no Computador Porém 128 símbolos não são o suficiente! Tabela ASCII Estendida: Os últimos 128 caracteres dependem da Aplicação/Sistema Operacional/País. Ex.: Série ISO 8859-x (16 tabelas diferentes!) 8859-1 Latim 1 8859-2 Latim 2 8859-5 Cyrillic MS-DOS- Code Page 437 Computação Básica – carlacastanho@cic.unb.br UNICODE: http://www.unicode.org/versions/Unicode6.0.0/ É o padrão universal de codificação de caracteres O Unicode fornece um número único para cada caractere, não importando a plataforma (a máquina e/ou sistema operacional em uso), o programa ou o idioma. Foi desenvolvido para resolver problemas que existiam com outros sistemas de codificação, pois não eram suficientes para suportar todos os caracteres e idiomas existentes. Sua criação foi baseada na tabela ASCII. Permite definir caracteres cuja representação interna no computador utiliza mais de um byte (UTF-8), tais como: 16 bits (UTF-16) e 32 bits (UTF-32). Vários sistemas operacionais, programas e browsers modernos suportam o Unicode. Mostrar no Powerpoint inserir símbolo Representação de Dados no Computador Computação Básica – carlacastanho@cic.unb.br 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 tempo 25 • Som: Red Book (padrão para CD de áudio) 44.1 kHz 16 bits Estéreo Representação de Dados no Computador Amostragem Computação Básica – carlacastanho@cic.unb.br 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 tempo 26 • Som: Red Book (padrão para CD de áudio) 44.1 kHz 16 bits Estéreo Uma amostra a cada 1/44100 s 16 bits/amostra (-32768 a 32767) 2 canais 1.411.200 bits/ segundo Representação de Dados no Computador Amostragem e Quantização Vetor de amostras: [0000 3332 6665 7FFF 7FFF 4CCC ... ] Computação Básica – carlacastanho@cic.unb.br Cor: geralmente especificadas por 3 ou 4 bytes, dependendo do sistema de representação utilizado. No sistema RGB (Red - Green- Blue) cada componete básica determina a quantidade de luz, vermelha, verde e azul, que compõe determinada cor. O valor de cada componente é normalmente representado com um número de 8 bits. Variam de 0x00 (ausência da cor) a 0xFF (maior intensidade da cor) As componentes básicas podem ser combinadas, resultando em um total 256 x 256 x 256 = 16.777.216 possíveis cores neste sistema. Exemplo: Na linguagem HTML #FF0000 é vermelho #00FF00 é verde #0000FF é azul #FFFF00 é amarelo #000000 é preto (ausência das cores) #FFFFFF é branco (a soma de todas as cores) Representação de Dados no Computador Computação Básica – carlacastanho@cic.unb.br 28 • Imagem Matriz numérica (geralmente números naturais) Cada ponto da imagem chama-se pixel e possui uma cor (RGB) Representação de Dados no Computador 8E4A7A C3AAC7 BF9EB5 DABAC3 Computação Básica – carlacastanho@cic.unb.br 29 • CONCLUSÃO: Todo e qualquer tipo de dado é armazenado na memória do computador e processado pela ULA (Unidade Lógico Aritmética) do processador como uma sequência de bits. Apenas o usuário(programador) sabe o significado da sequência de bits armazenada/processada. 100100112 = ??? Representação de Dados no Computador
Compartilhar