Baixe o app para aproveitar ainda mais
Prévia do material em texto
Arquitetura de Computadores Prof. Fábio M. Costa Instituto de Informática – UFG 1S/2004 Representação de Dados e Aritimética Computacional Roteiro Números inteiros sinalizados e não- sinalizados Operações aritiméticas Números de ponto flutuante Unidade Lógico-Aritimética Executa cálculos Todos os demais componentes do computadores existem em função dela Manipula números inteiros Pode manipular números de ponto flutuante (números reais) – FPU (Floating Point Unit) integrado no chip do processador, ou em um co-processador separado (obsoleto) ULA (ALU): Entradas e Saídas Representação de inteiros Apenas 0 e 1 para representar tudo Números positivos são armazenados em repr. binária “direta” Ex.: 41 = 00101001 Sem sinal de menos Sem ponto decimal (vírgula) Duas representações possíveis: Sinal-e-magnitude Complemento de dois Representação em sinal- magnitude Bit mais à esquerda (mais significativo) é o bit de sinal 0: positivo 1: negativo Ex.: +18 = 00010010 -18 = 10010010 Problemas Em operações aritiméticas é preciso considerar ambos o sinal e a magnitude Duas representações para zero (+0 e -0 !!!) Representação em complemento de dois +3 = 00000011 +2 = 00000010 +1 = 00000001 0 = 00000000 -1 = 11111111 -2 = 11111110 -3 = 11111101 Complemento de dois: Benefícios Uma única representação para zero Aritimética mais simples (veja a seguir) Operação de negação torna-se mais simples: 3 = 00000011 complemento booleano: 11111100 Soma 1 ao bit menos signific. (LSB): 11111101 Representação geométrica de inteiros em complemento de dois Negação: Caso especial 1 0 = 00000000 Negação bit-a-bit 11111111 Soma 1 ao LSB +1 Result 1 00000000 Overflow é ignorado, então: - 0 = 0 √ Negação: Caso especial 2 -128 = 10000000 Negação bit-a-bit 01111111 Soma 1 ao LSB +1 Resultado = 10000000 Então: -(-128) = -128 X Monitorar MSB (bit de sinal): Ele deve mudar após uma negação! Faixa de números Complemento de 2 de 8 bits +127 = 01111111 = 27 -1 -128 = 10000000 = -27 Complemento de 2 de 16 bits +32767 = 011111111 11111111 = 215 - 1 -32768 = 100000000 00000000 = -215 Conversão entre tamanhos e Extensão de sinal Números positivos: zeros à esquerda +18 = 00010010 +18 = 00000000 00010010 Números negativos: 1’s à esquerda -18 = 11101110 -18 = 11111111 11101110 i.e. reproduz o bit de sinal à esquerda Adição e subtração Adição binária normal Monitorar o overflow do bit de sinal Subtração: Tome o complemento de dois do subtraendo e adicione-o ao minuendo i.e.: a – b = a + (-b) Assim, nós precisamos apenas de circuitos de adição e de complemento Hardware para adição e subtração Multiplicação Mais complexa: Opera-se o produto parcial para cada dígito (do multiplicador) Desloca cada produto parcial uma casa à esquerda Adiciona-se os produtos parciais Multiplicação de números inteiros de n bits: produto com até 2n bits Exemplo de multiplicação 1011 Multiplicando (11 decimal) x 1101 Multiplicador (13 decimal) 1011 Produtos parciais 0000 Obs.: se o bit multiplicador é 1, 1011 copia-se o multiplicando; 1011 do contrário: zero 10001111 Produto (143 decimal) Obs.: requer resultado de tamanho duplo Multiplicação binária não- sinalizada Algoritmo direto Execução de um exemplo Multiplicação de números negativos Algoritmo direto (anterior) não funciona se um dos dois números for negativo Solução 1 converter para positivo, se necessário multiplicar como acima se os sinais forem diferentes, negar a resposta Solução 2 Algoritmo de Booth Algoritmo de Booth Exemplo (algoritmo de Booth) Divisão Mais complexa que a multiplicação Pior para números negativos Baseado na operação com “lápis e papel” Divisão de números inteiros não sinalizados - Exemplo Divisor Quociente Resto Restos Parciais Dividendo 10010011 1011 1011 00001101 001110 1011 001111 1011 100 Números reais Números com frações Poderiam ser representados em binário puro 1001,1010 = 23 + 20 + 2-1 + 2-3 = 9,625 Onde fica o ponto binário? Fixo? muito limitado Móvel? como mostrar onde ele está? Ponto Flutuante +/- 0,<mantissa> X 2<expoente> O ponto é fixado entre o bit de sinal e o corpo da mantissa O expoente indica a posição (relativa) do ponto B it si na l Expoente Polarizado Mantissa Representação Binária Polarizada Repr. Decimal Repr. Polarizada +8 1111 +7 1111 +6 1110 +5 1101 +4 1100 +3 1011 +2 1010 +1 1001 +0 1000 0 0111 1 0110 2 0101 3 0100 4 0011 5 0010 6 0001 7 0000 8 Vantagem principal: •comparação direta •lógica mais simples Uso na notação de Ponto Flutuante: •O expoente real é convertido para a forma polarizada Exemplos de números de ponto flutuante Faixa de Números Representáveis com 32 bits Referências Stallings (*) Cap. 8: Aritimética Computacional Patterson & Hennessy Cap. 4: Aritimética Computacional (*) referência principal Exercícios Stallings 8.4 a 8.6 8.14 a 8.16
Compartilhar