Arquitetura de Computadores - Instituto de Informática - UFGfmc/arqcomp/Aritimetica.pdf ·...

Preview:

Citation preview

Arquitetura de Computadores

Prof. Fábio M. CostaInstituto de Informática – UFG1S/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 tudoNúmeros positivos são armazenados em repr. binária “direta”

Ex.: 41 = 00101001

Sem 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 aritiméticas é preciso considerar ambos o sinal e a magnitudeDuas 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 funcionase um dos dois números for negativo

Solução 1converter para positivo, se necessário

multiplicar como acima

se os sinais forem diferentes, negar a resposta

Solução 2Algoritmo 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

RestosParciais

Dividendo10010011 1011 1011 00001101 001110 1011 001111 1011 100

Números reais

Números com fraçõesPoderiam 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 mantissaO expoente indica a posição (relativa) do ponto

Bit

sina

l

ExpoentePolarizado

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 & HennessyCap. 4: Aritimética Computacional

(*) referência principal

Exercícios

Stallings8.4 a 8.6

8.14 a 8.16

Recommended