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ãosinalizados
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 sinalmagnitude
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
x 1101
1011
0000
1011
1011
10001111
Multiplicando (11 decimal)
Multiplicador
(13 decimal)
Produtos parciais
Obs.: se o bit multiplicador é 1,
copia-se o multiplicando;
do contrário: zero
Produto (143 decimal)
Obs.: requer resultado de tamanho duplo
Multiplicação binária nãosinalizada
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
10010011
Dividendo
1011
001110
1011
Restos
001111
Parciais
1011
100
1011
00001101
Resto
Divisor
Quociente
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á?
Bit sinal
Ponto Flutuante
Expoente
Polarizado
Mantissa
+/- 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
Representação Binária
Polarizada
Repr. Decimal
Repr. Polarizada
+8
+7
+6
+5
+4
+3
+2
+1
+0
­0
­1
­2
­3
­4
­5
­6
­7
­8
1111
1111
1110
1101
1100
1011
1010
1001
1000
0111
0110
0101
0100
0011
0010
0001
0000
­
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
(*) referência principal
Patterson & Hennessy
Cap. 4: Aritimética Computacional
Exercícios
Stallings
8.4 a 8.6
8.14 a 8.16
Download

em PDF