EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância...

44
EA869 Representação Numérica Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1

Transcript of EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância...

Page 1: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

EA869 Representação Numérica

Faculdade de Engenharia Elétrica e de Computação (FEEC)

Universidade Estadual de Campinas (UNICAMP)

Prof. Levy Boccato

1

Page 2: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Introdução Toda informação manipulada por um computador digital, seja um

número correspondente ao valor de uma medida do ambiente, seja uma letra presente em uma mensagem de texto, é representada internamente por uma sequência de bits (binary digits).

A representação na base 2 se tornou a opção dominante devido aos avanços da eletrônica baseada em dispositivos semicondutores.

Neste tópico, abordaremos a questão de como o computador representa e manipula números.

Uma vez vistos estes conceitos, estaremos prontos para iniciar o estudo de arquitetura de computadores, começando pelo principal elemento, a saber, o processador.

2

Page 3: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Introdução Sinal digital:

Nível de tensão cujo valor exato não é determinante para o comportamento do circuito, apenas a faixa à qual ele pertence.

3

Nível alto (VH) – Bit 1

Nível baixo (VL) – Bit 0

Região proibida

Page 4: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Introdução Problema: estamos habituados a representar números na base

decimal. Porém, o computador lida com grandezas representadas como sequências de bits (base 2).

Fazer manipulações com números binários pode ser custoso e pouco intuitivo para nós.

Por isso, é necessário saber como converter números binários em outras bases mais familiares.

Duas bases são de particular interesse:

Decimal: por motivos óbvios.

Hexadecimal: facilita a representação de sequências maiores de bits (útil, por exemplo, quando estamos trabalhando com arquiteturas de 16 ou 32 bits).

4

11111111111111112 6553510 FFFF16

Page 5: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Conversão de base Conversão de base:

Exemplos: A4 = 10×161 + 4×160 = 16410

00110111 = 1×25 + 1×24 + 1×22 + 1×21 + 1×20 = 5510

Binário para hexadecimal:

0001 1101 0110 1110

5

A transformação de um número representado em uma base genérica para a base decimal é feita segundo a expressão: n10 = di . b

i + . . . . + d1 . b1 + d0

onde n10 é o número na base 10 correspondente à sequência de i+1 dígitos di na base b.

1 D 6 E

Page 6: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Números inteiros A conversão de base que vimos nos leva a interpretar a sequência

de bits como sendo a representação de um número natural.

Como podemos representar números inteiros (i.e., com sinal)?

6

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0

1 1 1

Só valores positivos

(Naturais)

Sinal e Magnitude

Qual a vantagem e a desvantagem desta

representação?

Vantagem Relação natural

com o uso comum

- Dois circuitos (soma e subtração); - Duas representações para o zero;

3 bits → 23 → 8 números

Bit mais significativo expressa o sinal: 0 – positivo 1 - negativo

Desvantagem

0

1

2

3

4

5

6

7

0

1

2

3

0

-1

-2

-3

Page 7: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Números inteiros A fim de contornar a necessidade de se ter dois circuitos

aritméticos – um para a adição, outro para subtração –, trabalha-se com a representação por complemento.

Neste contexto, a subtração entre dois números equivale à soma do primeiro com o complemento do segundo.

Complemento de 1:

Regra: o complemento de x (n bits, positivo) é dado por xc = 2n – 1 – x.

Exemplo: Qual o complemento de 1 do número 1?

7

111

001

110

-

Maior número representável

Page 8: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Números inteiros Complemento de 1:

Usando 3 bits, teríamos os seguintes números representados.

Para obter diretamente a cadeia binária do complemento, basta inverter todos os bits.

O bit mais significativo serve para indicar o sinal (exceto do zero).

8

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0

1 1 1

Qual o problema dessa representação?

Redundância do zero

0

1

2

3

-3

-2

-1

0

Page 9: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Números inteiros Complemento de 2:

Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a mais.

Regra: o complemento de x (n bits, positivo) é dado por xc = 2n – x.

Exemplo: Qual o complemento de 2 do número 3?

-3 = 8 – 3 = 5

9

1000

011

101

-

Page 10: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Números inteiros Complemento de 2:

Para obter diretamente a cadeia binária do complemento de 2, basta inverter todos os bits e somar um ao valor.

O bit mais significativo também indica o sinal.

10

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0

1 1 1

0

1

2

3

-4

-3

-2

-1

Positivos representáveis com n bits: 0 a 2n-1 - 1 Negativos representáveis com n bits: -1 a –2n-1

Page 11: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

11

Números reais Como representar números reais no computador?

Exemplos: 0,33

2,71828 (e)

3.847.992.023,45

Problema: pelo argumento diagonal de Cantor, sabemos que a cardinalidade do conjunto dos números reais ultrapassa a dos naturais. Logo, não é possível computar todos os números reais.

Consequência: o que se processa em computador necessariamente é uma aproximação do conjunto dos números reais.

Duas questões, portanto, são bastante importantes na escolha de uma representação para esta classe de números:

Qual a faixa de valores representáveis?

Qual a precisão que se atinge com a representação adotada?

Page 12: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

12

Números reais Como representar números reais no computador?

Primeira abordagem: representar um número real como um número natural.

Ideia: a parte fracionária (após o ponto decimal) é representada por um número fixo de dígitos binários – quanto maior o número de bits, maior a precisão desta representação.

Page 13: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

13

Números reais Ponto fixo

Esquema de conversão:

Multiplicação do valor real por 2d, onde d é o número de bits da parte fracionária.

Arredondamento para o valor inteiro mais próximo.

Exemplo: representação de 3,14 como um número inteiro de 8 bits com 4 bits para a parte fracionária.

3,14 × 24 = 50,24 ≅ 50 = 0011 0010

0 0 1 0

2-1 2-2 2-3 2-4

0,5 0,25 0,125 0,0625

0 0 1 1

23 22 21 20

,

8 4 2 1 Pesos

Page 14: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

14

Ponto Fixo Operações com representação em ponto fixo

Adição: equivalente à soma de inteiros Exemplo: 3,14 + 2,71 = 5,85

3,14 – representado como 0011 0010 = 50

2,71 – representado como 0010 1011 = 43

50 + 43 = 93 – 0101 1101

A cadeia binária 0101 1101 corresponde a

Multiplicação: equivalente à multiplicação de inteiros com subsequente deslocamento para a direita do resultado conforme o número de bits que compõem a parte fracionária. Exemplo: 3,14 × 2,71 = 8,5094

50 × 43 = 2150 = 1000 0110 0110

Deslocamento para a direita de 4 bits: 1000 0110

8125,52120212121202120 43210123

37582021212020202021 43210123 ,

Page 15: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante A representação em ponto flutuante é o padrão adotado pelos

sistemas computacionais para expressar um número real.

Notação científica:

Um único dígito à esquerda da vírgula (ponto decimal ou binário).

Normalização: o único dígito antes da vírgula sempre é diferente de zero.

Exemplos: 4,0 × 10-9 (Normalizado)

1,011 × 2-8 (Normalizado)

0,1011 × 2-7 (Não-normalizado)

15

Page 16: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Vantagens da notação científica normalizada:

Simplifica a troca de dados que incluem números representados

em ponto flutuante.

Simplifica os algoritmos para aritmética de ponto flutuante.

Aumenta a precisão dos números que podem ser armazenados em uma palavra.

0’s desnecessários são substituídos por dígitos verdadeiros à direita da vírgula.

16

Page 17: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Representação (normalizada):

1,xxxxxx2 × 2yyyy

O primeiro bit indica o sinal do número.

O campo seguinte contém os bits referentes ao expoente (positivo ou negativo), cujo tamanho afeta decisivamente a faixa de números representáveis.

O último campo, denominado fração (mantissa ou magnitude), contém os dígitos válidos na forma normalizada. O tamanho deste campo determina a precisão da representação.

Geral: (-1)S × F × 2E

17

yyyy 1,xxxxxx2

Sinal Expoente Fração, Mantissa ou Magnitude

k bits m bits

Page 18: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante A representação em ponto flutuante está sujeita à ocorrência

de overflow: Quando o expoente se torna excessivamente grande, não podendo ser

representado no campo correspondente, temos um overflow.

Há, também, a possibilidade de outro evento excepcional, denominado underflow: Quando o valor calculado se torna tão pequeno que não pode ser

representado, temos um underflow.

Ou, equivalentemente, um underflow ocorre quando o expoente negativo para a representação do número se torna muito grande e não cabe no campo correspondente.

18

Page 19: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Solução de compromisso:

Aumentar o número de bits destinados ao expoente amplia a faixa de números que podem ser representados. Além disso, reduz a possibilidade de ocorrência de overflow / underflow.

Aumentar o número de bits destinados à mantissa melhora a precisão ou a capacidade de aproximação associada à representação adotada.

Limitação: tamanho da palavra (memória / registrador).

19

Page 20: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Padrão IEEE 754 (1985):

Formato simples (single):

Formato duplo (double):

20

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

S Expoente Fração

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

S Expoente Fração

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Fração (continuação)

11 bits 52 bits

8 bits 23 bits

Page 21: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Padrão IEEE 754 (1985):

Bit escondido: dado que o bit mais significativo guardado na mantissa sempre seria igual a 1 – por causa da normalização –, ele não precisa ser armazenado junto com os demais bits, i.e., ele pode ser implícito à representação.

Deste modo, no formato single, teremos efetivamente 24 bits de mantissa (1 implícito e 23 armazenados). No caso double, serão 53 bits.

21

Page 22: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Padrão IEEE 754 (1985):

Para facilitar a comparação entre dois números representados em ponto flutuante, o expoente é armazenado antes da mantissa.

Contudo, expoentes negativos complicam um pouco a comparação, pois à primeira vista se parecem com valores de maior magnitude (sem sinal) – lembrar que o bit mais significativo é igual a 1.

Desejável: maior expoente positivo = 11111

menor expoente negativo = 00000

Esta convenção nos leva à notação polarizada, na qual um bias é subtraído do expoente (sem sinal) armazenado para determinar o valor real deste campo.

Valor escolhido: bias = 127 (single)

bias = 1023 (double)

22

Page 23: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Padrão IEEE 754 (1985):

Com estas modificações, a representação em ponto flutuante segundo o padrão IEEE 754 é expressa da seguinte forma:

(-1)S × (1 + mantissa) × 2(expoente – bias)

Expandindo em função dos bits da mantissa b0, b1, b2, :

(-1)S × (1 +(b1 × 2-1) + (b2 × 2-2) + (b3 × 2-3) + ) × 2(expoente – bias)

Ou, equivalentemente:

(-1)S × (1 +((b1 × 222) + (b2 × 221) + + (b23 × 20)) × 2-23) × 2(expoente – bias)

23

Page 24: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Padrão IEEE 754 (1985):

Números positivos:

Números negativos:

24

0 1,111... × 2-126 1,000... × 2-126

Precisão: 2-23× 2-126

Menor expoente armazenado: 1

1,111... × 2127 1,000... × 2127

Precisão: 2-23× 2127

Maior expoente armazenado: 254

0

-1,000... × 2127 -1,111... × 2127

Precisão: 2-23× 2127

-1,000... × 2-126 -1,111... × 2-126

Precisão: 2-23× 2-126

Page 25: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Padrão IEEE 754 (1985):

Representação do zero: Menor expoente: 000...0

Menor fração ou mantissa: 000...0

Símbolos especiais:

O maior expoente (255) é reservado para símbolos especiais.

Por exemplo, em vez de uma divisão por zero causar uma exceção, um símbolo +∞ ou -∞ pode ser retornado. Neste caso, a representação adotada é: expoente = 255 e fração = 000...0

Operações inválidas como 0 / 0 ou uma subtração entre dois valores infinitos produzem um símbolo NaN (not a number). A representação adotada para esta condição é: expoente = 255 e fração = valor não-nulo.

25

Page 26: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Padrão IEEE 754 (1985):

Em vez de haver um vazio (gap) entre o 0 e o menor valor normalizado, o padrão IEEE 754 aceita os chamados números não-normalizados.

Características: Expoente armazenado é o mesmo que o utilizado para o valor zero (00...0).

Fração não-nula.

Correspondência: (-1)S × (0 + fração) × 2-126

Exemplo: Menor valor não-normalizado (single): 0,000...001 × 2-126 = 2-149.

Maior valor não-normalizado (single): 0,111...111 × 2-126 = (1 – 2-23) × 2-126.

26

Page 27: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Exemplo:

k = 4 e m = 2

Neste caso, o bias é igual a 7.

Expoente = 0 – reservado para o 0 e para os números não-normalizados.

1,00 × 2-6 = 0,01562500

1,01 × 2-6 = 0,01953125

1,10 × 2-6 = 0,02343750

1,11 × 2-6 = 0,02734375

1,00 × 27 = 128

1,01 × 27 = 160

1,10 × 27 = 192

1,11 × 27 = 224

Expoente = 15 – reservado para ±∞ e NaN.

27

Menor expoente válido

Maior expoente válido

Page 28: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Padrão IEEE 754 (1985):

Quadro resumo:

28

Page 29: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Padrão IEEE 754 (1985):

Exemplo: decimal para ponto flutuante

(1) 0,625 – base decimal

(2) 0,1012 – base 2

(3) Normalizando: 1,01 × 2-1

(4) Sinal: 0

(5) Expoente: -1 + 127 = 126

(6) Fração: 01000...0

(7) Palavra armazenada: 0x3f20 0000

29

0 0 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

S Expoente Fração

Page 30: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Padrão IEEE 754 (1985):

Exemplo: ponto flutuante para decimal

(1) Palavra armazenada: 0xc1b2 4000

(2) Sinal = 1 – número negativo

(3) Expoente = 131 – removendo a polarização, obtemos o expoente verdadeiro: 131 – 127 = 4.

(4) Fração = 2-2 + 2-3 + 2-6 + 2-9

(5) Valor: (-1)S × (1 + fração) × 2(expoente – bias)

(-1) × (1 + 0,392578125) × 24 = - 22,28125

30

1 1 0 0 0 0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

S Expoente Fração

Page 31: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Adição:

Passo 1: alinhar o ponto binário (decimal) tendo como referência o número com maior expoente.

Para isto, basta deslocar o significando do menor número para a direita até que seu expoente corrigido se torne equivalente à referência.

Passo 2: efetuar a operação de adição.

Passo 3: normalizar o resultado.

Passo 4: arredondar (truncar) para que valor obtido possua exatamente o número de dígitos permitido.

Passo 5: caso necessário, efetuar nova normalização.

31

Page 32: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Adição:

32

Page 33: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Adição:

Exemplo: 0,5 – 0,4375

Usando 4 bits para a representação:

0,5 = 0,1 × 20 = 1,000 × 2-1

-0,4375 = - 0,0111 × 20 = -1,110 × 2-2

O significando do número com menor expoente (no caso, -1,110) é deslocado para a direita até que seu expoente atinja o valor -1.

-1,110 × 2-2 = -0,111 × 2-1

Soma:

1,000 × 2-1 – 0,111 × 2-1 = 0,001 × 2-1

33

Page 34: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Adição:

Exemplo: 0,5 – 0,4375

Normalize a soma, verificando a ocorrência de overflow ou underflow.

0,001 × 2-1 = 1,000 × 2-4

Arrendonde o resultado (neste caso em particular, não há necessidade de mudança).

1,000 × 2-4 = 0,0625.

34

Page 35: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Multiplicação:

Passo 1: calcular o expoente.

Basta somar os expoentes armazenados!?

Passo 2: multiplicar os significandos.

Passo 3: normalizar o resultado.

Passo 4: arredondar (truncar).

Isto é feito para que valor obtido possua exatamente o número de dígitos permitido. Se necessário, efetuar nova normalização.

Passo 5: determinar o sinal do resultado.

35

É preciso subtrair a polarização.

Page 36: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Multiplicação:

36

Page 37: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Multiplicação:

Exemplo: 0,5 × (-0,4375)

Usando 4 bits para a representação:

0,5 = 0,1 × 20 = 1,000 × 2-1

-0,4375 = - 0,0111 × 20 = -1,110 × 2-2

Somando os expoentes sem bias:

-1 + (-2) = -3

Multiplicando os significandos:

1,000 × 1,110 = 1,110000

Podemos manter apenas 4 bits – 1,110 × 2-3

37

Page 38: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Multiplicação:

Exemplo: 0,5 × (-0,4375)

O produto já está normalizado e não houve overflow / underflow.

Não há necessidade de arredondar.

Sinal: como os sinais dos operandos eram diferentes, o resultado será negativo.

-1,110 × 2-3

Convertendo para decimal: -1,110 × 2-3 = -0,21875

38

Page 39: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Ponto Flutuante Bits de guarda e arredondamento:

Para arredondar os números de maneira mais precisa, o hardware pode incluir bits extras nos cálculos.

O padrão IEEE 574 prevê o uso de dois bits extras à direita durante as somas intermediárias, denominados bits de guarda e

arredondamento.

Exemplo: 2,56 × 100 + 2,34 × 102

Com bits extras: 2,3400 + 0,0256 = 2,3656 × 102

Arredondamento: 2,37 × 102

Sem bits extras: 2,34 + 0,02 = 2,36 × 102

39

Page 40: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Observações Alguns erros comuns:

Deslocamento para a direita sempre implementa a divisão por uma potência de 2.

Isso é verdade desde que seja um número sem sinal.

Ou, então, caso o deslocamento preserve o bit de sinal.

Adição em ponto flutuante é associativa!

Por causa da precisão limitada, é possível que arredondamentos intermediários levem a resultados diferentes dependendo da ordem em que as somas são feitas.

Exemplo: a = -1,5 × 1038 b = 1,5 × 1038 c = 1

(a + b) + c = 1

a + (b + c) = 0

40

Page 41: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Caracteres Vários dados de entrada e saída dos computadores não são números,

vide o teclado, mouse, impressora etc.

É muito comum nos depararmos com caracteres:

Letras: A, B, …, Z

Dígitos: 0, 1, …, 9

Caracteres especiais: ?, @, #

Caracteres não-imprimíveis: ENTER, espaço

A representação numérica que vimos até agora faz sentido para o hardware e para o programador de linguagem de baixo nível. Porém, o usuário final lida diretamente com caracteres.

Como o computador associa estas duas representações?

41

Byte Caracteres visíveis

CÓDIGOS ALFANUMÉRICOS

Page 42: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Caracteres Existem diversos padrões de códigos alfanuméricos, sendo o de maior

destaque o chamado código ASCII (American Standard Code for Information Interchange).

ASCII: associa uma sequência de 8 bits (byte) a um caractere.

Por exemplo, ao digitar OBA no teclado, o processador recebe a seguinte

sequência de bits:

42 OBA 1001111 1000010 1000001

Page 43: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Números + Programa Armazenado Importante: uma sequência de bits armazenada na memória não

possui um significado intrínseco; isto é, ela pode ser interpretada de maneiras diferentes: Número sem sinal;

Número inteiro;

Número em representação de ponto flutuante;

Caractere (ASCII);

Instrução de máquina.

A ação que o processador está executando no momento é que determina como aquela cadeia binária deve ser interpretada.

Lembrar: há uma diferença fundamental entre os números

representados em computador e os números do mundo real.

Magnitude limitada.

Precisão limitada.

43

Podemos representar apenas 2N números, onde N é o número de bits para armazenamento/representação.

Page 44: EA869 Representação Numérica - Unicamplboccato/topico_2... · Elimina o problema da redundância da representação do número 0, possibilitando a representação de um valor a

Créditos

44

Este material está baseado nas notas de aula elaboradas pelo Prof. Léo Pini e pelo aluno de doutorado Tiago Novaes.