aritmética computacional aula 01 · aritmética computacional –aula 01 professor: andré luis...

36
Aritmética Computacional Aula 01 Professor: André Luis Meneses Silva E-mail: [email protected] orgearq20091.wordpress.com

Upload: others

Post on 20-Jul-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

Aritmética Computacional – Aula

01

Professor: André Luis Meneses Silva

E-mail: [email protected]

orgearq20091.wordpress.com

Page 2: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

Agenda

Números com sinal e sem sinal

Adição e Subtração

Multiplicação

Divisão

Representação de ponto flutuante.

Overflow

Page 3: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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

Page 4: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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

Page 5: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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

Page 6: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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

Page 7: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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

Page 8: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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.

Page 9: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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.

Page 10: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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.

Page 11: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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

Page 12: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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.

Page 13: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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

Page 14: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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

Page 15: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

Números com Sinal e sem Sinal

Qual o valor de 1000 0111 em decimal, casoesteja usando complemento de 1?

Page 16: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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

Page 17: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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:

Page 18: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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

Page 19: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

Números com Sinal e sem Sinal

Qual o valor de 1000 0111 em decimal, caso esteja usando complemento de 2?

Page 20: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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)

Page 21: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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.

Page 22: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

Números com sinal e sem sinal

Simplificações da notação complemento de 2.

Teste de limites de um vetor

Soma/Subtração.

Page 23: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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?

Page 24: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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).

Page 25: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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:

Page 26: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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

Page 27: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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

Page 28: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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).

Page 29: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

Será que o mipspossui sub?

Page 30: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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.

Page 31: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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 ?

Page 32: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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?

Page 33: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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?

Page 34: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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).

Page 35: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

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.

Page 36: Aritmética Computacional Aula 01 · Aritmética Computacional –Aula 01 Professor: André Luis Meneses Silva E-mail: alms@ufs.br orgearq20091.wordpress.com. Agenda Números com

Referências

Hennessy e Patterson

Capítulo 3.