23
1 Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática – UFG 1S/2004 Representação de Dados e Aritmética Computacional Roteiro Números inteiros sinalizados e não- sinalizados Operações aritméticas Números de ponto flutuante

Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

1

Arquitetura de Computadores

Eduardo Albuquerque

Adaptado do material do Prof. Fábio M. CostaInstituto de Informática – UFG1S/2004

Representação de Dados e Aritmética Computacional

Roteiro

Números inteiros sinalizados e não-sinalizadosOperações aritméticasNúmeros de ponto flutuante

Page 2: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

2

Unidade Lógico-aritmética

Executa cálculosTodos os demais componentes do computadores existem em função delaManipula números inteirosPode manipular números de ponto flutuante (números reais) – FPU (Floating Point Unit)

integrado no chip do processador, ouem um co-processador separado (obsoleto)

ULA (ALU): Entradas e Saídas

Page 3: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

3

Representação de inteiros

Apenas 0 e 1 para representar tudoNúmeros positivos são armazenados em repr. binária “direta”

Ex.: 41 = 00101001Sem sinal de menosSem ponto decimal (vírgula)Duas representações possíveis:

Sinal-e-magnitudeComplemento de dois

Representação em sinal-magnitude

Bit mais à esquerda (mais significativo) é o bit de sinal

0: positivo1: negativo

Ex.:+18 = 00010010-18 = 10010010

ProblemasEm operações aritméticas é preciso considerar ambos o sinal e a magnitudeDuas representações para zero (+0 e -0 !!!)

Page 4: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

4

Representação em complemento de dois

+3 = 00000011+2 = 00000010+1 = 000000010 = 00000000-1 = 11111111-2 = 11111110-3 = 11111101

Complemento de dois: Benefícios

Uma única representação para zeroaritmética mais simples (veja a seguir)Operação de negação torna-se mais simples:

3 = 00000011complemento booleano: 11111100Soma 1 ao bit menos signific. (LSB): 11111101

Page 5: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

5

Representação geométrica de inteiros em complemento de dois

Negação: Caso especial 1

0 = 00000000Negação bit-a-bit 11111111Soma 1 ao LSB +1Result 1 00000000Overflow é ignorado, então:- 0 = 0 √

Page 6: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

6

Negação: Caso especial 2

-128 = 10000000Negação bit-a-bit 01111111Soma 1 ao LSB +1Resultado = 10000000Então:-(-128) = -128 XMonitorar 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

Page 7: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

7

Conversão entre tamanhos

Números positivos: zeros à esquerda+18 = 00010010+18 = 00000000 00010010Números negativos: 1’s à esquerda-18 = 11101110-18 = 11111111 11101110i.e. reproduz o bit de sinal à esquerda

Exercício (8.3)

Considere a seguinte operação sobre uma palavra binária. Comece pelo bit menos significativo. Copie tos os bits que são iguais a 0, até que seja encontrado o primeiro bit diferente de zero, e copie também este bit. Então, tome o complemento de cada bit daí por diante. Qual é o resultado?

Page 8: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

8

Adição e subtração

Adição binária normalMonitorar 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

Page 9: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

9

Exercício

Somar em complemento de 2-7 + 5-4 + 43 + 4-4 + (-1)5 + 4-7 + (-6)

Subtraia os números-7 - 5-4 - 43 - 4-4 - (-1)5 - 4-7 + (-6)

Multiplicação

Mais complexa:Opera-se o produto parcial para cada dígito (do multiplicador)Desloca cada produto parcial uma casa à esquerdaAdiciona-se os produtos parciais

Multiplicação de números inteiros de n bits:produto com até 2n bits

Page 10: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

10

Exemplo de multiplicação

1011 Multiplicando (11 decimal)x 1101 Multiplicador (13 decimal)

1011 Produtos parciais0000 Obs.: se o bit multiplicador é 1,

1011 copia-se o multiplicando;1011 do contrário: zero10001111 Produto (143 decimal)Obs.: requer resultado de tamanho duplo

Multiplicação binária não-sinalizada

Page 11: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

11

Algoritmo direto

Execução de um exemplo

Page 12: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

12

Multiplicação de números negativos

Algoritmo direto (anterior) não funcionase um dos dois números for negativo

Solução 1converter para positivo, se necessáriomultiplicar como acimase os sinais forem diferentes, negar a resposta

Solução 2Algoritmo de Booth

Algoritmo de Booth

Page 13: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

13

Page 14: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

14

Exemplo 7*3 (algoritmo de Booth)

Exercício

Calcule o resultado de 0101 * 1010 (em complemento de dois) usando o algoritmo de Booth

Page 15: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

15

Solução

Proxima aula

Page 16: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

16

Divisão

Mais complexa que a multiplicaçãoPior para números negativosBaseado na operação com “lápis e papel”

Divisão de números inteiros não sinalizados

001111

1011

00001101

100100111011

0011101011

1011100

Quociente

Dividendo

Resto

RestosParciais

Divisor

Page 17: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

17

Números reais

Números com fraçõesPoderiam ser repres. em binário puro

1001,1010 = 23 + 20 + 2-1 + 2-3 = 9,625Onde fica o ponto binário?Fixo?

muito limitadoMóvel?

como mostrar onde ele está?

Ponto Flutuante

+/- 0,mantissa X 2expoente

O ponto é fixado entre o bit de sinal e o corpo da mantissaO expoente indica a posição (relativa) do ponto

Bit

sina

l

ExpoentePolarizado

Mantissa

Page 18: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

18

Exemplos de números de ponto flutuante

Ponto flutuante

Mantissa é armazenada em complemento de 2O Expoente fica em notação polarizada

Ex Excesso (viés) 128 significa8 bit para campo de expoenteValores puros entre 0-255Subtraia 128 para obter o valor coretoIntervalo entre –128 +128

Page 19: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

19

Normalização

Números PF são normalmente normalizadosI.e. o expoente é ajustado de talforma que o primeiro bit seja 1Como é sempre 1 não precisa ser armazenado (Ex. notação científicaEx 3.123 x 103

Intervalos para PF

Para número mde 32 bits8 bits de expoente+- 2256 ~ 1,5 x 1077

PrecisãoO efeito de alterar o bit menos significativo da mantissaMantissa de 32 bits 2-23 ~1.2 x 10-7

Cerca de 6 casas decimais

Page 20: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

20

Números representáveis

IEEE 754

Padrão para armazenamento de ponto flutuantePadrões pra 32 e 64 bits8 e 11 bits de expoenteFormatos estendidos (tanto para mantissa e expoente) para valores intermediários

Page 21: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

21

Aritmética PF +/-

Verifica zerosAlinha termos (ajuste de expoentes)Adiciona ou subtrai termosNormaliza resultados

Aritmética PF x/∏

Verifica zerosSoma/subtrai expoentesMultiplica/divide termos (verifica sinais)NormalizaArredondaTodos os valores intermediários devem estar em armazenamento de espaço duplo

Page 22: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

22

Multiplicação em ponto flutuante

Divisão em ponto flutuante

Page 23: Arquitetura de Computadoreseduardo/arq/Aritimetica-eduardo.pdf · Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática

23

Referências

Capítulo 8

IEEE 754 no site do IEEE