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 10000 01111 01102 01013 01004 00115 00106 00017 00008
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
Top Related