View
2
Download
0
Category
Preview:
Citation preview
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
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
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 !!!)
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
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 √
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
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?
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
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
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
11
Algoritmo direto
Execução de um exemplo
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
13
14
Exemplo 7*3 (algoritmo de Booth)
Exercício
Calcule o resultado de 0101 * 1010 (em complemento de dois) usando o algoritmo de Booth
15
Solução
Proxima aula
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
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
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
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
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
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
22
Multiplicação em ponto flutuante
Divisão em ponto flutuante
23
Referências
Capítulo 8
IEEE 754 no site do IEEE
Recommended