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

Post on 20-Jul-2020

6 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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