aritmética computacional aula 01 · aritmética computacional –aula 01 professor: andré luis...
Post on 20-Jul-2020
12 Views
Preview:
TRANSCRIPT
Aritmética Computacional – Aula
01
Professor: André Luis Meneses Silva
E-mail: alms@ufs.br
orgearq20091.wordpress.com
Agenda
Números com sinal e sem sinal
Adição e Subtração
Multiplicação
Divisão
Representação de ponto flutuante.
Overflow
Introdução
Objetivos desta aula
Descrever como os números negativos sãorepresentados.
Mostrar o que acontece se uma operação cria umnúmero muito maior do que poderia ser representado
Mostrar como são implementadas as operaçõesaritméticas
Revisão
Conversão base qualquer para decimal
Fórmula geral
Nb = an.bn + .... + a2.b2 + a1.b
1 + a0.b0
1 0 1 1 0 12 =
1x25 = 32
0x24 = 0
1x23 = 8
1x22 = 4
0x21 = 0
1x20 = 1
4510
Revisão
Conversão decimal para qualquer base.
4276810 para hexaecimal
42768 (divisão inteira) 16 = 2673 R: 0
2673 (divisão inteira) 16 = 167 R: 1
167 (divisão inteira) 16 = 10 R: 7
10 (divisão inteira) 16 = 0 R: 10
0xA710
Revisão
Conversão decimal para qualquer base
6810 para binário
68 (divisão inteira) 2 = 34 R: 0
34 (divisão inteira) 2 = 17 R: 0
17 (divisão inteira) 2 = 8 R: 1
8 (divisão inteira) 2 = 4 R: 0
4 (divisão inteira) 2 = 2 R: 0
2 (divisão inteira) 2 = 1 R: 0
1 (divisão inteira) 2 = 0 R: 1
10001002
Revisão
Conversões entre as bases 2, 8 e 16
São mais simples
Como 23 = 8, separando os bits de um número binárioem grupos de tres bits
10.101.0012 = 28 . 58 . 18 = 2518
Como 24 = 16, separando os bits de um númerobinário em grupos de quatro bits
110.1010.11012 = 616. A16 . D16 = 6AD16
Revisão
Porque os números hexadecimais são tãoimportantes
Simplifica a representação do número.
4276810 = A71016 = 10100111000100002
Sistemas computacionais baseiam-se em aritméticabinária.
Conversão trivial.
Números com Sinal e sem Sinal
Existem algumas abordagens para representarnúmeros positivos e negativos em um sistemacomputacional.
Veremos 3 diferentes abordagens:
Sinal e Magnitude.
Complemento de 1.
Complemento de 2.
Números com Sinal e sem Sinal
Sinal e magnitude.
O número binário possui um bit específico paratratamento do sinal.
Este bit é o primeiro bit. Quando 1 negativo, quando 0positivo
Os demais bits representam o número.
Números com Sinal e sem Sinal
Para encontrar o valor decimal:
Descartar primeiro bit (sinal)
Os demais bits, aplica-se conversão binário decimal (visto anteriormente).
011 = 1 * 21 +1 * 20 = + 3
111 = 1 * 21 +1 * 20 = - 3
Números com Sinal e sem Sinal
Sinal e Magnitude
Problemas:
0 positivo e 0 negativo.
Implementação em hardware mais complicada.
Operações aritméticas se tornam mais complicadas.
Números com Sinal e sem Sinal
Complemento de 1.
Melhoria da representação de sinal e magnitude.Utilizado ainda em alguns sistemas computacionais.
Utiliza 1 bit para indicar o sinal
Números com Sinal e sem Sinal
Para encontrar o valor decimal:
Descartar primeiro bit (sinal)
Quando positivo, procedimento não altera
Quando negativo, deve-se negar o valor
011 = 1 * 21 +1 * 20 = + 3
111 = 0 * 21 +0 * 20 = - 0
Números com Sinal e sem Sinal
Qual o valor de 1000 0111 em decimal, casoesteja usando complemento de 1?
Números com Sinal e sem Sinal
Complemento de 1
Ainda possui 0 positivo e 0 negativo
Também problemático para algumas operaçõesaritméticas
Números com Sinal e sem Sinal
Complemento de 2
Melhoria da representação de complemento de 1, mais utilizada nos sistemas computacionais atuais.
Utiliza 1 bit para indicar o sinal
Exemplos:
Números com Sinal e sem Sinal
Para encontrar o valor decimal:
Descartar primeiro bit (sinal)
Quando positivo, procedimento não altera
Quando negativo, deve-se negar o valor e somar 1
011 = 1 * 21 +1 * 20 = + 3
111 = 0 * 21 +0 * 20 + 1 = - 1
Números com Sinal e sem Sinal
Qual o valor de 1000 0111 em decimal, caso esteja usando complemento de 2?
Números com Sinal e sem Sinal
Complemento de 2
Só possui 0 (como positivo)
Facilita as operações aritméticas (veremos isso nospróximos slides)
Números com Sinal e sem Sinal
Processadores dão suporte a instruções com sinal ousem sinal.
Em instruções sem sinal, o bit de sinal será consideradocomo valor significativo
Muitas das instruções que vimos para o Mips, possui umainstrução correspondente para fazer a avaliação denúmeros sem levar em conta o sinal.
Exemplos
sltu, sltiu, addu, subu, etc.
Números com sinal e sem sinal
Simplificações da notação complemento de 2.
Teste de limites de um vetor
Soma/Subtração.
Teste de limites de um vetor
Seja o seguinte código java
If (0 <= k && k <= tamanho)
Em assembly MIPS, ficaria assim:
sltu $t0, $a1, $t2 # $a1 = k e $t2 = tamanho
beq $t0, $zero, IndiceForaDosLimites
Porque isso funciona?
Números com Sinal e sem Sinal
Se k for um número negativo, pela notaçãocomplemento de 2 ele será maior quequalquer número positivo (se desconsiderarmoso sinal).
Números com Sinal e sem Sinal
Adição e Subtração
São as operações aritméticas mais simples para osprocessadores.
As operações funcionam da mesmo forma queaprendemos na escola, só que agora, com númerosbinários.
Exemplos:
Números com Sinal e sem Sinal
Adição e Subtração
São as operações aritméticas mais simples para osprocessadores.
As operações funciona da mesmo forma queaprendemos na escola, só que agora, com númerosbinários.
Exemplos:
1101 0001 0001
Números com Sinal e sem Sinal
Adição e Subtração
A notação complemento de 2 facilita estas tarefas.
A seguinte subtração 7 – 6 pode ser feita dasseguintes formas:
Forma tradicional
Números com Sinal e sem Sinal
Adição e Subtração
A notação complemento de 2 facilita estas tarefas.
A seguinte subtração 7 – 6 pode ser feita dasseguintes formas:
Complemento de 2 (como uma soma).
Será que o mipspossui sub?
Overflow
Observem que no último caso tivemos umpequeno problema:
A soma resultou em um valor que não pode serrepresentado em 32 bits.
Quando isso acontece, dizemos que ocorreuoverflow.
Para os casos, como do exemplo acima, o overflownão teria maiores problemas, visto que podemosdescartar o dígito 33 sem quaisquer problemas.
Detectando Overflow
Operações aritméticas estão sujeitas aoverflow.
O quadro a seguir ilustram casos de oveflow:
Operação A B Overflow
A + B ≥ 0 ≥ 0 ?
A + B < 0 < 0 ?
A – B ≥ 0 < 0 ?
A – B < 0 ≥ 0 ?
Detectando Overflow
Operações aritméticas estão sujeitas aoverflow.
O quadro a seguir ilustram casos de oveflow:
Operação A B Overflow
A + B ≥ 0 ≥ 0 < 0
A + B < 0 < 0 ≥ 0
A – B ≥ 0 < 0 < 0
A – B < 0 ≥ 0 ≥ 0
Pode ocorrer overflow se B for 0?Pode ocorrer overflow se A for 0?
Detectando Overflow
Seja o seguinte código:
public class ClasseTeste {
public static void main(String args[]){
int i = -2147483648;
int j = 0;
System.out.println(j - i);
}
}
Qual será a saída?
Efeitos do overflow
Se o bit extra gerado for necessário, podeacontecer uma interrupção, (exceção):
Ao detectar a interrupção, controle saltará para umendereço predefinido para tratamento deinterrupção.
O endereço interrompido é salvo para uma possívelretomada.
No caso do MIPS, o endereço de retorno é salvo noregistrador EPC (Exception program counter).
Efeitos do overflow
Linguagem de programação, bem como afinalidade da aplicação pode influir paraforma do tratamento.
Instruções (unsigned) não passa por detectorde overflow.
addu, addiu, subu.
Referências
Hennessy e Patterson
Capítulo 3.
top related