ritmética Binária Caminho de Dados Ivanildo Miranda Octávio ugusto Deiroz Representação Binárias Representação Hexadecimal Números sem Sinal Números com Sinal Operações ritméticas (soma e subtração) com inteiros Operações Lógicas Instruções do MIPS Construção de uma UL Multiplicação Divisão Representação em ponto flutuante
Representação Binária Notação Posicional Decimais 547 = 5 x 2 + 4 x + 7 x Notação Posicional Binária = x 2 9 + x 2 8 + x 2 7 + x 2 6 + x 2 5 + x 2 4 + x 2 3 + x 2 2 + x 2 + x 2 Representação Binária lgoritmo de conversão de Decimal Para Binário 35 2 7 2 8 2 4 2 2 2 2 ssim : 35 = 2 2
Representação Hexadecimal 2 3 4 5 6 7 8 9 B C D E F ssim : 35 = 2 = 2 = 2 3 6 Observe que foram acrescentados s não significativos à representação binária, para facilitar a conversão Números sem Sinal Os registradores do MIPS são de 32 bits e portanto os números inteiros são representados como padrões de 32 bits. Podemos ter duas situações : números sem e com sinal No primeiro caso, podemos ter 2 32 combinações, o que nos permite representar de a 2 32 - ( a 4.294.967.295) Como representar números com sinal? 3
Números com Sinal Como representar números com sinal? Primeira idéia : Reservar um dos bits para o sinal - representa números positivos representa números negativos S 3 29 28 27 26 25 24........................ 5 4 3 2 Números com Sinal Problemas com o uso do bit mais significativo para representar o sinal : Estabelecer o valor do bit de sinal, após as operações (necessita de uma tabela de comparações) Existência de dois zeros (um positivo e outro negativo) 4
lternativa : Números com Sinal Representar os números como complemento de 2, ou seja, todos os números iniciados com são positivos e todos os números iniciados com são negativos. : = = = 2.................. = 2.47.483.647 = -2.47.483.648 = -2.47.483.647 = -2.47.483.646.................. = -2 = - Soma de Inteiros sem Sinal Soma Segue o mesmo procedimento da soma de decimais : Exemplo : 7+6 = 68 Vai Um->...... Total 5
Soma e Subtração de Inteiros com Sinal Subtração : Exemplo : 68-6=7 => 68+(-6)=7 Basta somar o complemento : Vai Um->...... Total Operações Lógicas - ND ND (E) Exemplo :.B=C B C B.B 6
7 Operações Lógicas - OR Operações Lógicas - OR OR (OU) +B=C +B B C B Exemplo : Operações Lógicas - NOT Operações Lógicas - NOT NOT () B Exemplo : NOT (Negação) =B
chando o complemento de um número Basta inverter o número e somar Exemplo : char o complemento de 7 7 NOT (7) (+) = -7............ Instruções MIPS Tabela Resumo Categoria Instrução Exemplo Resultado add add $s,$s2,$s3 $s = $s2 + $s3 addi addi $s,$s2,k $s = $s2 + k ritmética addu addiu addu $s,$s2,$s3 addiu $s,$s2,k $s = $s2 + $s3 $s = $s2 + k sub sub $s,$s2,$s3 $s = $s2 - $s3 subu subu $s,$s2,$s3 $s = $s2 - $s3 and and $s,$s2,$s3 $s = $s2 & $s3 Lógica andi or andi $s,$s2,k or $s,$s2,$s3 $s = $s2 & k $s = $s2! $s3 ori ori $s,$s2,k $s = $s2! k 8
Instruções MIPS Categoria Instrução Exemplo Resultado Lógica (Deslocamento) sll srl sll $s,$s2,k srl $s,$s2,k $s = $s2 << k $s = $s2 >> k ND B & B OR B! B NOT 9
Multiplexador S (Seletor) B =, se S= ou B, se S= Unidade Lógica de bit para realizar ND e OR a S (Seletor) resultado b
Unidade Lógica de bit para realizar ND e OR a S (Seletor) resultado b Circuito para Geração do vai-um (Carry-out) CarryIn a CarryOut b CarryOut=(b.CarryIn)+(a.CarryIn)+(a.b)+(a.b.CarryIn)
a b CarryIn Circuito para Geração da Soma Soma Soma=(a.b.CarryIn)+(a.b.CarryIn)+(a.b.CarryIn)+(a.b.CarryIn) UL de bit Operação CarryIn a resultado b + CarryOut 2
UL de bit com subtração Operação CarryIn a binvertido resultado b + CarryOut UL com implementação de SLT a binvertido CarryIn Operação b + resultado menor CarryOut Set Detecção de overflow Overflow 3
CarryIn Operação a binvertido b Resultado a b Menor CarryOut Resultado a2 b2 Resultado2 a3 b3 Resultado3 Set Overflow Detecção de Resultado Resultado Resultado2 Zero Resultado3 4
Construção de uma UL Sistema de Carry em cascata apresenta problemas de desempenho Solução : Implementar um sistema Carry Lookahead 5
Construção de uma UL Usando Uma UL para Multiplicar 6
Usando Uma UL para Multiplicar Melhorado Usando Uma UL para Multiplicar Melhorado 2 7
Usando Uma UL para Dividir Usando Uma UL para Dividir Melhorado 8
Usando Uma UL para Dividir Melhorado 2 Operações em Ponto Flutuante Representação em Ponto Flutuante Precisão Simples 3 3 29 28 27 26 25 24 23 22 2 2 9 8 7 6 5 4 3 9 8 7 6 5 4 3 2 s expoente mantissa bit 8 bits 23 bits Precisão Dupla 3 3 29 28 27 26 25 24 23 22 2 2 9 8 7 6 5 4 3 9 8 7 6 5 4 3 2 s bit expoente bits mantissa 23 bits Mantissa - continuação - 32 bits 9
Operações em Ponto Flutuante Representação em Ponto Flutuante - Detalhes O número da mantissa não é representado conversão para decimal se dá pela fórmula (-) s x (+mantissa) (Expoente-peso) Notação normalizada pelo padrão IEEE754 Propriedades de números reais nem sempre são verdadeiras usando notação de ponto flutuante. Exemplo : x 38 + x 38 x 38 x 38 + Operações em Ponto Flutuante lgoritmo de soma em ponto flutuante 2
Operações em Ponto Flutuante Somador em ponto flutuante Operações em Ponto Flutuante Somador em ponto flutuante 2