Representação de Números

Ver Todos os Exercícios

Teoria

Introdução

Fala moçada, beleza? Vamos dar início ao estudo de uma disciplina muuuuito bacana que é o Cálculo Numérico, o nosso objetivo aqui é estudar o uso de alguns métodos numéricos para resolução dos mais diversos problemas!!! Então fique tranquilo que seus problemas acabaram!

Nós devemos ter em mente que o computador, a máquina, vai fazer tudo para a gente! Ou seja, os métodos que veremos muitas vezes vão parecer cansativos e demorados se nos imaginarmos resolvendo eles, mas normalmente são moleza para uma máquina.

E por mais que uma máquina faça todas as contas para nós, nós nunca conseguimos nos livrar de um detalhe bem incômodo: os erros. Vamos falar muito deles nesse curso pois seu entendimento é super necessário para conseguirmos aplicar os métodos numéricos adequadamente.

Algarismos significativos

Antes de começar a estudar como os números são apresentados para as máquinas, vamos relembrar um assuntinho que nos acompanha desde o início dessa jornada nas Engenharias e Ciências Exatas. Consegue dar um palpite? Se você chutou Algarismos significativos, você está certíssimo.

Veja bem, os algarismos significativos de um número são aqueles que podem ser usados com confiança e geralmente corresponde ao número de algarismos corretos mais um estimado, também chamado de duvidoso, e esse algarismo duvidoso carrega com ele uma incerteza e é nela que mora o erro.

Observe a marcação em nossa régua, quantos centímetros ela está medindo?

Bom, podemos afirmar com certeza que ela está medindo mais que 2,2 e menos que 2,3 cm. O número exato que procuramos existe e mora no intervalo entre esses números, mas não podemos identificá-lo com certeza absoluta, não é?

Podemos colocar esse número mais perto do 2,2   c m ou mais perto do 2,3   c m . Mas qual vai estar certo? Não podemos afirmar nada...

Então, temos uma incerteza aí! E isso está dependendo do observador ou do equipamento que você está usando para tirar essa medida.

No exemplo acima, cada estimativa tem 3 algarismos significativos, eles podem ser algarismos corretos ou duvidosos. Temos certeza, que o número que procuramos está entre 2,2   c m e 2,3   c m ou seja o número é 2,2 tem 2 algarismos corretos e estamos em dúvida quanto ao terceiro. Podemos considerar este último mais perto do 2,3   c m ou mais perto do 2,2   c m .

Nesse caso acima, estamos com 3 algarismos significativos e nossa incerteza é da ordem de 0,1   c m . Isso porque podemos considerar mais perto do 2,3   c m ou mais perto do 2,2   c m .

Vamos ver como funciona, quantos algarismos significativos tem o número 31.400? Ele pode ter 3, 4 ou 5 algarismos significativos, dependendo de os zeros serem conhecidos com confiança.

Perceba bem que todas essas representações podem ser apresentadas na forma de notação científica e um computador representa um número real no sistema próprio denominado aritmética de ponto flutuante resolvendo toda a incerteza!

Representação de Números

Tudo que usarmos vai depender de você, da sua necessidade. Vamos ver como isso interfere nos resultados?

Número máximo de dígitos ( k )

Imagine que você quer calcular a área de um disco de raio igual a 10 c m .

A = π r ²

A = π ( 10 ) ²

A = 100 π

A = 100 * 3,1415 . . .

Você pode dar várias respostas e ainda assim todas estão erradas! Algumas respostas possíveis seriam:

A = 314   c m 2

A = 314,16   c m 2

A = 314,159265   c m 2

A = 314,1592653589793238462643383279502884197169399375105820974 c m 2

Enfim, você pegou o espírito da coisa né? Como o π e um número com infinita casas decimais nunca chegaremos a resposta exata. O resultado que obtemos vai depender exclusivamente da aproximação de π que usarmos. E essa aproximação deve ser tão exata quanto precisarmos. E essa ideia será muito importante!

O número de casas decimais a ser usado vai depender da precisão desejada e de onde você vai aplicar esses dados!

Base escolhida

Como nós representamos números? É sobre isso que vamos falar nessa parte.

Cara, a base nada mais é do que a quantidade de algarismos que podemos usar para representar os números. Estamos acostumados com a base decimal que possui 10 algarismos (0, 1, 2... 9), essa é a base com a qual estamos acostumados a lidar no nosso dia a dia e aprendemos desde pequenos. Mas um computador, por outro lado, normalmente usa um sistema de representação binário (0 ou 1), o que significa que o computador irá escrever os números apenas com os algarismos 0 e 1, ele também usa o ponto para representar a nossa vírgula no sistema decimal.

E você pode usar qualquer base que queira para representar os números! A decimal é a mais empregada atualmente, mas existe a binária, a base hexadecimal (base 16), a octal (base 8), entre outras.

E os erros só aumentam quando manipulamos os números em diversas bases. Por exemplo, um número pode ter representação finita em uma base e não-finita em outra (não se preocupe, isso será visto mais pra frente)! Na nossa interação com o computador, nós passamos as informações para ele pelo sistema decimal. Esses dados são convertidos para o binário, no qual todos os cálculos são feitos e depois convertidos de volta para decimal para que possamos ler. Todas essas conversões geram ainda mais erros!

Conversão de Números nos Sistemas Decimal e Binário

Vamos começar engatinhando.

No sistema decimal, para representar um número podemos escrever ele na forma de somas potências de base dez. Parece complicado, mas olha só:

Vamos analisar o número 3682 que é do sistema decimal:

3682 = 3000 + 600 + 80 + 2

3682 = 3 × 1000 + 6 × 100 + 8 × 10 + 2 × 1

3682 = 3 × 10 ³ + 6 × 10 ² + 8 × 10 1 + 2 × 10 0

Prontinho, escrevemos um número como uma soma de potências de base dez.

Um número escrito na forma binária só usa algarismos do tipo 0 e 1. Mas, da mesma forma que era na base decimal, os algarismos vão indicar uma soma de potências de base dois Por exemplo, vamos agora analisar um número 1011 escrito na base 2:

1011 = 1 × 2 ³ + 0 × 2 ² + 1 × 2 ¹ + 1 × 2 0

Entendeu como funciona? Todos os números podem ser escritos como uma soma de potências de uma base. Generalizando, um número com os algarismos c i c i - 1 … c 2 c 1 c 0 na base β seria:

c i c i - 1 … c 2 c 1 c 0 β = c i β i + c i - 1 β i - 1 + … + c 2 β 2 + c 1 β 1 + c 0 β 0

Mas por que eu to falando isso? Porque assim é fácil passarmos números do sistema binário pro decimal! Por exemplo o 100101 2 em decimal fica:

100101 2 = 1 × 2 5 + 0 × 2 4 + 0 × 2 3 + 1 × 2 2 + 0 × 2 1 + 1 × 2 0

Fazendo essas continhas temos:

100101 2 = 1 × 2 5 + 0 × 2 4 + 0 × 2 3 + 1 × 2 2 + 0 × 2 1 + 1 × 2 0 = 32 + 4 + 1 = 37

Então o número 100101 2 da base 2 equivale ao 37 na base dez.

E pra voltar? Ir do decimal para o binário? Aí o que nós vamos fazer é dividir o número por 2 várias vezes até aparecer o 0 no quociente e ir anotando os restos! Assim oh:

37 2 = 18   e   r e s t o   1

18 2 = 9   e   r e s t o   0

9 2 = 4   e   r e s t o   1

4 2 = 2   e   r e s t o   0

2 2 = 1   e   r e s t o   0

1 2 = 0   e   r e s t o   1

Agora escrevemos os restos de trás pra frente:

37 10 = 100101 2

Percebeu que tá batendo certinho com o que tínhamos? Até aí tudo nas mil maravilhas né?

Mas, e para convertermos os números que vem depois da vírgula? Como faz??

Bom, vamos começar indo do binário para o decimal que é mais fácil, os números depois do ponto (que correspondem a vírgula no sistema decimal) serão elevados a potências de dez negativas. O expoente sempre irá diminuir:

101.1101 2 = 1 × 2 2 + 0 × 2 1 + 1 × 2 0 + 1 × 2 - 1 + 1 × 2 - 2 + 0 × 2 - 3 + 1 × 2 - 4 =

= 4 + 0 + 1 + 0.5 + 0.25 + 0 + 0.0625 = 5.8125 10

Ou seja, quando temos casas decimais ficamos com:

c i … c 0 . c - 1 … c - j β = c i β i + … + c 0 β 0 + c - 1 β - 1 + … + c - j β - j

Então o processo binário decimal não mudou muito né? É só continuarmos diminuindo as potências de 2 .

E para irmos do decimal para o binário? Vamos usar o 5.8125 10 . Primeiro fazemos a parte inteira:

5 2 = 2   e   r e s t o   1

2 2 = 1   e   r e s t o   0

1 2 = 0   e   r e s t o   1

5 10 = 101 2

Beleza, agora para a parte depois da vírgula nós vamos multiplicar por 2 ao invés de dividir! Depois de multiplicar verificamos se o número é maior que 1 . Se for, coloca-se 1 na parte fracionária e o “resto” passa adiante. Caso contrário, botamos um 0 . E vamos fazendo isso até chegarmos no 1 . Vai ficar mais claro com o exemplo:

0.8125 × 2 = 1.625 → D í g i t o   1

0.625 × 2 = 1.25 → D í g i t o   1

0.25 × 2 = 0.5 → D í g i t o   0

0.5 × 2 = 1 → D í g i t o   1

Pronto, ah e aqui a gente lê na ordem certa haha.

0.8125 10 = 0.1101 2

Somando:

5 10 + 0.8125 10 = 101.1101 2

Exatamente o que a gente esperava!

Agora lembra aquela história que eu falei de números que são finitos em uma base e não finitos em outra? Vamos passar o número 5.8 para binário. O 5 já sabemos que fica 101 , mas e o 0.8 ?

0.8 × 2 = 1.6 → D í g i t o   1

0.6 × 2 = 1.2 → D í g i t o   1

0.2 × 2 = 0.4 → D í g i t o   0

0.4 × 2 = 0.8 → D í g i t o   0

0.8 × 2 = 1.6 → D í g i t o   1

Opa, percebeu que entramos em um loop? Voltamos para o 0.8 ! Então nosso número em binário será uma dízima:

5.8 10 = 101.110011001100 … 2 = 101 . 1100 _ 2

E é daí que alguns problemas aparecem. . .

Para compreendermos como irá funcionar nesses casos, precisaremos entender um pouco melhor sobre a linguagem que os computadores usam. Isso veremos no próximo tópico, beleza?! Mas antes vamos praticar um pouco de conversão?!

Representação de Números

Conversão de Números nos Sistemas Decimal e Binário

Exercícios Resolvidos

Exercício Resolvido #1

Transforme os seguintes números da base decimal para a base binária:

(a) 25 (b) 11

Passo 1

  1. 25
  2. Fala meu amigo, vamos relembrar um pouquinho como trocamos a base de um algarismo:

    Vamos do decimal para o binário? Aí o que nós vamos fazer é dividir o número por 2 várias vezes até aparecer o 0 no quociente e ir anotando os restos! Assim oh:

    25 2 = 12   e   r e s t o   1

    12 2 = 6   e   r e s t o   0

    6 2 = 3   e   r e s t o   0

    3 2 = 1   e   r e s t o   1

    1 2 = 0   e   r e s t o   1

    Organizando direitinho os restos fica:

    (1)

    (0)

    (0)

    (1)

    (1)

    Agora lemos os restos de trás pra frente:

    25 10 = 11001 2

    Molezinha! Vamos pro próximo?

    Passo 2

  3. 11

Meu bem, o esqueminha pra resolver esse exercício é igualzinho ao anteror. Vamos ver como fica?

11 2 = 5   e   r e s t o   1

5 2 = 2   e   r e s t o   1

2 2 = 1   e   r e s t o   0

1 2 = 0   e   r e s t o   1

Organizando direitinho os restos fica:

(1)

(1)

(0)

(1)

Agora lemos os restos de trás pra frente:

11 10 = 1011 2

Feshooooow! Agora é só partir pro abraço!

Resposta

  1. 25 10 = 11001 2
  2. 11 10 = 1011 2

Exercício Resolvido #2

Converta os seguintes números decimais para sua forma binária:

x = 37                                                                 y = 2345                                                                 z = 0.1217

Passo 1

Tá! Vamos lá!

x = 37 10

37 2 = 18   e   r e s t o   1

18 2 = 9   e   r e s t o   0

9 2 = 4   e   r e s t o   1

4 2 = 2   e   r e s t o   0

2 2 = 1   e   r e s t o   0

1 2 = 0   e   r e s t o   1

x = 100101 2

Passo 2

y = 2345 10

2345 2 = 1172   e   r e s t o   1

1172 2 = 586   e   r e s t o   0

586 2 = 293   e   r e s t o   0

293 2 = 146   e   r e s t o   1

146 2 = 73   e   r e s t o   0

73 2 = 36   e   r e s t o   1

36 2 = 18   e   r e s t o   0

18 2 = 9   e   r e s t o   0

9 2 = 4   e   r e s t o   1

4 2 = 2   e   r e s t o   0

2 2 = 1   e   r e s t o   0

1 2 = 0   e   r e s t o   1

y = 100100101001 2

Passo 3

Como só tem parte decimal começamos por ela direto. Lembrando que agora temos que multiplicar e não dividir!

0.1217 × 2 = 0.2434 → D í g i t o   0

0.2434 × 2 = 0.4868 → D í g i t o   0

0.4868 × 2 = 0.9736 → D í g i t o   0

0.9736 × 2 = 1.9472 → D í g i t o   1

0.9472 × 2 = 1.8944 → D í g i t o   1

0.8944 × 2 = 1.7888 → D í g i t o   1

0.7888 × 2 = 1.5776 → D í g i t o   1

0.5776 × 2 = 1.1552 → D í g i t o   1

0.1552 × 2 = 0.3104 → D í g i t o   0

0.3104 × 2 = 0.6208 → D í g i t o   0

0.6208 × 2 = 1.2416 → D í g i t o   1

Já deu pra perceber que isso não vai parar tão cedo né? Isso se parar! Então podemos dar como resposta:

z = 0.00011111001 … 2

Resposta

x = 100101 2

y = 100100101001 2

z = 0.00011111001 … 2

Exercício Resolvido #3

Converta os seguintes números binários para sua forma decimal:

x = 101101 2                                                                                                                                 y = 110101011 2

        z = 0.1101 2                                                                                                                                   w = 0.111111101 2

Passo 1

x = 101101 2 = 1 × 2 5 + 0 × 2 4 + 1 × 2 3 + 1 × 2 2 + 0 × 2 1 + 1 × 2 0 =

= 32 + 8 + 4 + 1 = 45 10

Passo 2

y = 110101011 2 =

= 1 × 2 8 + 1 × 2 7 + 0 × 2 6 + 1 × 2 5 + 0 × 2 4 + 1 × 2 3 + 0 × 2 2 + 1 × 2 1 + 1 × 2 0 =

= 256 + 128 + 32 + 8 + 2 + 1 = 427 10

Passo 3

z = 0.1101 2 = 0 × 2 0 + 1 × 2 - 1 + 1 × 2 - 2 + 0 × 2 - 3 + 1 × 2 - 4 =

= 1 2 + 1 4 + 1 16 = 0.8125 10

Passo 4

w = 0.111111101 2 =

= 0 × 2 0 + 1 × 2 - 1 + 1 × 2 - 2 + 1 × 2 - 3 + 1 × 2 - 4 + 1 × 2 - 5 + 1 × 2 - 6 + 1 × 2 - 7 + 0 × 2 - 8 + 1 × 2 - 9 =

= 1 2 + 1 4 + 1 8 + 1 16 + 1 32 + 1 64 + 1 128 + 1 512 = 0 . 994140625 10

Resposta

x = 45 10

y = 427 10

z = 0.8125 10

w = 0 . 994140625 10

Exercício Resolvido #4

Julgue a afirmação abaixo como verdadeiro ou falso:

“Na estrutura de um programa em Matlab, as instruções contêm expressões, que por sua vez, criam e processam matrizes.”

Passo 1

Opa, para resolver essa questão vai ajudar se a gente se lembrar que o nome do Matlab é um acrônimo para Matrix Laboratory, ou seja, laboratório de matrizes.

Então a base do Matlab são as matrizes!

E sim, é verdade que quando você realiza qualquer operação no Matlab, por traz da sua sintaxe você tá criando e operando matrizes.

Então essa resposta é Verdadeira.

Resposta

Ei, a resposta está no passo a passo :)

Exercício Resolvido #5

Considere um computador que opera em base 2 , com representação em precisão simples. Em cada um dos itens abaixo, mostre qual é o número real que está representado em forma de ponto flutuante normalizado.

a   0   01100010   1010100100 … 0

b   1   11111111   1010100100 … 0

c   0   11111111   0000000000 … 0

d   1   00000000   0110010000 … 0

e   1   00000000   0000000000 … 0

f   0   10010100   0110110000 … 0

g   1   01111111   0010100100 … 0

Passo 1

a   O segundo bloco de números representa o expoente. Nele, temos n= 8 espaços, que são 8 bits. Dessa forma, o expoente máximo é dado por:

e m a x = 2 n . e . - 1 - 1

e m a x = 127

Assim, a representação normalizada será:

- 1 s 2 c - 127 1 + f

s = 0

c = 1 × 2 6 + 1 × 2 5 + 1 × 2 1 = 64 + 32 + 2 = 98

f = 1 × 2 - 1 + 1 × 2 - 3 + 1 × 2 - 5 + 1 × 2 - 8 = 0.66015625

Então o número sendo representado é:

- 1 0 ∙ 2 98 - 127 ∙ 1 + 0.66015625 = 2 - 29 ∙ 1 . 66015625 ≈ 3.092282 × 10 - 9

Passo 2

b   Repare que aqui temos toda a característica cheia de 1 , mas a mantissa diferente de zero. Isso é um caso onde a máquina acusaria N a N (not a number).

Passo 3

c Aqui temos expoente todo no 1 e a mantissa zerada. Como s = 0 , essa seria a representação de + ∞ .

Passo 4

d Como temos expoente igual a 0 e uma mantissa diferente de 0 , isso indica um número não normalizado. Consideramos então a mantissa entre 0 e 1 e expoente mínimo ficando com:

- 1 s 2 - 126 f

s = 1

f = 2 - 2 + 2 - 3 + 2 - 6 = 0.390625

Então o número sendo representado é:

- 1 1 ∙ 2 - 126 0.390625 = - 4.591775 ∙ 10 - 39

Passo 5

e Temos o expoente e a mantissa zerada. Como s = 1 , essa seria a representação de - 0 .

Passo 6

f - 1 s 2 c - 127 1 + f

s = 0

c = 2 7 + 2 4 + 2 2 = 148

f = 2 - 2 + 2 - 3 + 2 - 5 + 2 - 6 = 0.421875

Então o número sendo representado é:

- 1 0 ∙ 2 148 - 127 ∙ 1 + 0.421875 = 2 21 ∙ 1 . 421875 = 2.981888 × 10 6

Passo 7

g - 1 s 2 c - 127 1 + f

s = 1

c = 2 6 + 2 5 + 2 4 + 2 3 + 2 2 + 2 1 + 2 0 = 127

f = 2 - 3 + 2 - 5 + 2 - 8 = 0.16015625

- 1 1 ∙ 2 127 - 127 ∙ 1 + 0.16015625 = - 1.16015625

Resposta

a 3.092282 × 10 - 9

b N a N

c + ∞

d - 4.591775 ∙ 10 - 39

e - 0

f 2.981888 × 10 6

g - 1.16015625

Exercício Resolvido #6

Considere um computador de 16   b i t s com expoente máximo e = 31 e a representação em aritmética flutuante na base 2 .

a Determine o menor número positivo normalizado e não normalizado representável nesta máquina, na base 10 .

b Determine o maior número positivo representável nesta máquina, na base 10 .

Passo 1

Antes de qualquer coisa temos que descobrir quantos b i t s essa máquina reserva para cada coisa. Temos 1 b i t pro sinal. Para que o expoente máximo seja 31 , usando nossa relação:

31 = 2 n . e . - 1 - 1

log 2 ⁡ 32 = n . e . - 1

5 = n . e . - 1

n . e . = 6

Logo, temos 6 b i t s   para o expoente.

Ficamos então com:

16 - 6 - 1 = 9

Logo, 9   b i t s para a mantissa.

Passo 2

a O menor número normalizado representável seria:

0   000001   000000000

Equivalente em decimal a:

- 1 0 ∙ 2 - 30 ∙ 1 ≈ 9.313226 × 10 - 10

Já o menor número não normalizado seria:

0   000000   000000001

Equivalente a:

- 1 0 ∙ 2 - 30 ∙ 0.001953125 = 1.818989 × 10 - 12

Passo 3

b O maior número positivo representável é:

0   111110   111111111

O que equivale a:

- 1 0 ∙ 2 31 ∙ 1 . 998046875 = 4.290772992 × 10 9

Resposta

a Menor número positivo normalizado: 9.313226 × 10 - 10

Menor número positivo não normalizado: 1.818989 × 10 - 12

b Maior número positivo: 4.290772992 × 10 9

Exercício Resolvido #7

Seja um computador binário, cujo sistema de ponto flutuante tenha 1   b i t para o sinal do número, 5   b i t s para o expoente e 6   b i t s para a mantissa num total de 12   b i t s . Qual o menor número positivo e o maior número positivo nele representável.

Passo 1

Como temos 5   b i t s para o expoente, o expoente máximo é dado por:

e m a x = 2 5 - 1 - 1 = 2 4 - 1 = 15

Portanto, o expoente mínimo será - 14 .

Também podemos pensar que a máquina vai do expoente 00001 até o 11110 , ou seja, do 1 ao 30 . Como queremos representar os números negativos também, subtraímos 15 , de modo que os expoentes agora variam de - 14 até 15 .

Passo 2

Para obter o maior número, devemos ter o maior expoente e a maior mantissa.

- O maior expoente: 15

- A maior mantissa: f= 0. (111111)

Colocando a mantissa na base decimal:

0.111111 2 = 2 - 1 + 2 - 2 + 2 - 3 + 2 - 4 + 2 - 5 + 2 - 6 = 2 0 - 2 - 6

O valor máximo é dado por:

2 15   ∙   1 + 2 0 - 2 - 6

Sendo assim, o valor máximo que ela pode representar é:

2 15 ∙ 2 - 2 - 6 = 65024

Passo 3

O valor mínimo normalizado é dado por:

- O menor expoente: -14

- A menor mantissa: f= . (000000)

Observação: Só podemos ter essa mantissa toda 0 porque o valor normalizado já conta com um dígito 1 antes da vírgula.

Assim, o valor mínimo normalizado será:

2 - 14   ∙   1 + 0 = 2 - 14 = 6.103515625   x   10 - 5

Passo 4

O valor mínimo não normalizado é bem parecido, mas tem a seguinte diferença: não tem aquele 1 antes da vírgula. Então, para obter o valor mínimo, devemos considerar 0 antes da vírgula e o máximo de 0s possíveis na mantissa, colocando 1 apenas no dígito de menor valor. Assim:

- A menor mantissa: f= 0. (000001)

Passando a mantissa para a base decimal:

2 - 6

Assim, o menor valor não normalizado é dado por:

2 - 14   ∙   2 - 6 = 2 - 20 = 9.53674316   x   10 - 7

Resposta

Maior número positivo: 65024

Menor número positivo normalizado: 6.103515625 × 10 - 5

Menor número positivo não normalizado: 9.5367431640625 × 10 - 7

Exercício Resolvido #8

Considere uma máquina cujo sistema de representação de número é definido por: 𝛽 = 10, 𝑘 = 4,𝑒 ∈ [−5,5]. Pede-se:

(a) Qual o menor e o maior número em módulo representados nesta máquina?

(b) Como será representado o número 73,758 nesta máquina, se for usado o arredondamento? E se for usado o truncamento?

Passo 1

(a) Qual o menor e o maior número em módulo representados nesta máquina?

Opaa, chega mais ! Vamos começar com esse exercício que parece moleza mas é cheio de detalhes. Tem um palpite de como se começa??

Veja bem, que informações o exercício nos dá? O problema nos fornece a base, o número máximo de algarismos que vamos colocar na mantissa e os valores mínimos e máximos de expoente (no intervalo de -5 até 5).

Então, vamos relembrar aquela estrutura que pode ser montada só com as informações que nós temos:

Sabendo que: 1 ≤ d 1 ≤ β - 1

Nós conhecemos o valor de β = 10

Então, considerando a inequação acima podemos determinar o primeiro valor de d 1

Que pode deve estar entre 1 e 9.

1 ≤ d 1 ≤ 9

Fácil né? Então significa que podemos variar o nosso valor de (0,1....   d k ) até (0,9...   d k ).

O exercício fornece que k= 4, então nossos valores de d serão: d 1 , d 2 ,   d 3   e   d 4 .

Para montar a estrutura do menor valor que a máquina pode registrar, devemos considerar que o primeiro dígito d 1 ≠ 0 (qualquer zero a esquerda acaba sendo reconsiderado e reorganizado e vai parar laaaaaaaaaaaá no expoente) , e como determinamos ali encima ele deve estar entre 1 e 9.

Como o menor valor entre 1 e 9, é o próprio 1 nosso d 1 = 1 assumirá essa forma.

Beleza, o β = 10 e n= [-5,5].

A escolha do menor expoente é bem intuitiva né, qual é o menor valor -5 ou 5?

O menor valor é -5, heheheh

Agora é só montar aquela estrutura show de bola:

Lembra, nós temo as base, expoentes e d 1 . Mano, agora é só completar!!

O menor número, em valor absoluto, representado por essa máquina seria:

0.1000 × 10 - 5 = 10 - 6

Enquanto o maior número seria:

0.9999 × 10 5 = 99990

Moleza né???

Vamos para o próximo passo!

Passo 2

(b) Como será representado o número 73,758 nesta máquina, se for usado o arredondamento? E se for usado o truncamento?

Ao organizarmos o número 73,758 no formato da aritmética de ponto flutuante, fica mais ou menos assim:

0.73758 × 10 2

Mas, nós temos que deixar com a quantidade correta de números dentro da mantissa que foi sugerida pelo exercício de k= 4.

Vamo simbora!

Só dando uma relembrada como eu faço o arredontamento?

O arredondamento com k dígitos é dado por:

Se d k + 1 ≥ 5 arredondamos para cima.

Se d k + 1 < 5 arredondamos pra baixo!

Legal, foca nesse número 0.73758 , a certeza que temos está em 0,737X , com 3 algarismos significativos e o último duvidoso!

E agora observe bem: 0.737 58 o próximo algarismo em d k + 1 ≥ 5 e então arredondamos para CIMA!

Então, com a técnica de arredondamento fica assim:

0.7376 × 10 2

No truncamento fica como?

No truncamento nós terminamos em d k =   d 4

Observe que temos:

0.73758 × 10 2

Ao para em d 4 para fazer o truncamento, fica assim:

0.7375 × 10 2

Resposta

  1. Mínimo: 0.1000 × 10 - 5 = 10 - 6
  2. Máximo: 0.9999 × 10 5 = 99990

  3. Arredondamento : 0.7376 × 10 2

Truncamento : 0.7375 × 10 2

Exercício Resolvido #9

Considere uma máquina com sistema de representação de números definido por: base 10 , 5 dígitos na mantissa e expoente no intervalo - 6 ; 6 . Como será representado o número 1892477 nesta máquina se for usado o arredondamento. E se for usado o truncamento?

Passo 1

Nosso instinto já manda a gente fazer o que? Passar pra binário né? Mas presta atenção no que o enunciado fala!! Ele diz que a máquina funciona na base 10 ! Então não tem que passar nada pra nada haha. É só passar pra notação normalizada de ponto flutuante:

1892477 = 1.892477 × 10 6

Usando o truncamento temos:

1.89247 × 10 6

E usando o arredondamento:

1.8924 8 × 10 6

Resposta

Truncamento: 1.89247 × 10 6

Arredondamento: 1.89248 × 10 6

Exercício Resolvido #10

Um computador armazena números reais utilizando 1   b i t para o sinal do número, 7   b i t s para o expoente e 8   b i t s para a mantissa. Admitindo que haja arredondamento, como ficariam armazenados os seguintes números decimais?

a 265

b 12.5

c - 445.25

d - 0.1

e - 12.8

f 2500.05

Em seguida, responda:

i Qual o valor verdadeiramente representado em cada caso acima?

i i Qual o maior e o menor número positivo nele representável?

i i i Qual o menor número maior que 100 nele representável?

i v Qual o maior número menor que 20 nele representável?

Passo 1

Os 7   b i t s do expoente variarão de 0000001 até 1111110 , isto é, de 1 até 126 . Como precisamos representar expoentes negativos, subtraímos 63 disso de modo que o expoente agora varie de - 62 até 63 .

a 265

Passando o número para binário.

265 2 = 132   e   r e s t o   1

132 2 = 66   e   r e s t o   0

66 2 = 33   e   r e s t o   0

33 2 = 16   e   r e s t o   1

16 2 = 8   e   r e s t o   0

8 2 = 4   e   r e s t o   0

4 2 = 2   e   r e s t o   0

2 2 = 1   e   r e s t o   0

1 2 = 0   e   r e s t o   1

265 10 = 100001001 2

Então, 265 10 = 100001001 2 = 1 . 00001001 × 2 8 . Repare que esse 1 na frente do binário é aquele 1 que sempre somamos e está implícito. Na hora de passar ele para a representação passamos só o que ficou depois da vírgula. Além disso, como temos 8   b i t s mantissa e 8 casas decimais, não precisaremos cortar nenhuma.

Quanto ao expoente 8 , precisamos somar aqueles 63 que calculamos para obtermos o expoente certo.

8 + 63 = 71 = 64 + 4 + 2 + 1 = 2 6 + 2 2 + 2 1 + 2 0

A representação no sistema será:

0   1000111   00001001

Passo 2

b 12.5

Passando o número para binário. Primeiro a parte inteira:

12 2 = 6   e   r e s t o   0

6 2 = 3   e   r e s t o   0

3 2 = 1   e   r e s t o   1

1 2 = 0   e   r e s t o   1

12 10 = 1100 2

Agora a parte fracionária:

0.5 × 2 = 1 → D í g i t o   1

Então, 12.5 10 = 1100.1 2 = 1 . 1001 × 2 3 . Temos 8   b i t s mantissa e 4 casas decimais, então não precisaremos cortar nenhuma.

Consertando o expoente:

3 + 63 = 66 = 64 + 2 = 2 6 + 2 1

A representação no sistema será:

0   1000010   10010000

Passo 3

c - 445.25

Passando o número para binário. Primeiro a parte inteira:

445 2 = 222   e   r e s t o   1

222 2 = 111   e   r e s t o   0

111 2 = 55   e   r e s t o   1

55 2 = 27   e   r e s t o   1

27 2 = 13   e   r e s t o   1

13 2 = 6   e   r e s t o   1

6 2 = 3   e   r e s t o   0

3 2 = 1   e   r e s t o   1

1 2 = 0   e   r e s t o   1

445 10 = 110111101 2

Agora a parte fracionária:

0.25 × 2 = 0.5 → D í g i t o   0

0.5 × 2 = 1 → D í g i t o   1

Então, - 445.25 10 = - 110111101.01 2 = - 1 . 1011110101 × 2 8 . Temos 8   b i t s mantissa e 10 casas decimais, então basta cortar as duas últimas. Como o que vai ser cortado é menos da metade da última casa decimal é só tirar mesmo. É importante lembrarmos também que agora o primeiro dígito será um 1 , já que o número é negativo.

Consertando o expoente:

8 + 63 = 71 = 64 + 4 + 2 + 1 = 2 6 + 2 2 + 2 1 + 2 0

A representação no sistema será:

1   1000111   10111101

Passo 4

d - 0.1

Passando o número para binário.

0.1 × 2 = 0.2 → D í g i t o   0

0.2 × 2 = 0.4 → D í g i t o   0

0.4 × 2 = 0.8 → D í g i t o   0

0.8 × 2 = 1.6 → D í g i t o   1

0.6 × 2 = 1.2 → D í g i t o   1

0.2 × 2 = 0.4 → D í g i t o   0

Opa, estamos repetindo, então temos uma dízima!

Logo, - 0.1 10 = - 0.0 0011 ¯ 2 = - 1.10011010 × 2 - 4 . Temos 8   b i t s na mantissa e infinitos no nosso número, então temos que cortar. Mas agora o que vamos remover é maior que a metade da última casa decimal que vai ficar, então somamos 1 nela, que foi o que eu fiz ali em cima. E novamente temos um número negativo, então primeiro dígito 1 .

Consertando o expoente:

- 4 + 63 = 59 = 32 + 16 + 8 + 2 + 1 = 2 5 + 2 4 + 2 3 + 2 1 + 2 0

A representação no sistema será:

1   0111011   10011010

Passo 5

e - 12.8

Passando o número para binário. Primeiro a parte inteira:

12 2 = 6   e   r e s t o   0

6 2 = 3   e   r e s t o   0

3 2 = 1   e   r e s t o   1

1 2 = 0   e   r e s t o   1

12 10 = 1100 2

Agora a parte fracionária:

0.8 × 2 = 1.6 → D í g i t o   1

0.6 × 2 = 1.2 → D í g i t o   1

0.2 × 2 = 0.4 → D í g i t o   0

0.4 × 2 = 0.8 → D í g i t o   0

0.8 × 2 = 1.6 → D í g i t o   1

Opa, estamos repetindo, então temos uma dízima!

Logo, - 12.8 10 = - 1100 . 1100 ¯ 2 = - 1.10011010 × 2 3 . Novamente temos 8   b i t s na mantissa e infinitos no nosso número, então temos que cortar. E caímos na mesma situação da última letra, na qual o que vamos remover é maior que a metade da última casa decimal que vai ficar, então somamos 1 nela. Por fim, como o número é negativo, então o primeiro dígito é 1 .

Consertando o expoente:

3 + 63 = 66 = 64 + 2 = 2 6 + 2 1

A representação no sistema será:

1   1000010   10011010

Passo 6

f   2500.05

Passando o número para binário. Primeiro a parte inteira:

2500 2 = 1250   e   r e s t o   0

1250 2 = 625   e   r e s t o   0

625 2 = 312   e   r e s t o   1

312 2 = 156   e   r e s t o   0

156 2 = 78   e   r e s t o   0

78 2 = 39   e   r e s t o   0

39 2 = 19   e   r e s t o   1

19 2 = 9   e   r e s t o   1

9 2 = 4   e   r e s t o   1

4 2 = 2   e   r e s t o   0

2 2 = 1   e   r e s t o   0

1 2 = 0   e   r e s t o   1

2500 10 = 100111000100 2

Agora a parte fracionária:

0.05 × 2 = 0.1 → D í g i t o   0

Opa, caímos naquele loop do 0.1 que já sabemos que vai dar uma dízima! É só pegarmos o valor do 0.1 da outra letra e botarmos um 0 na frente que teremos o resultado do 0.05 !

Logo, 2500.05 10 = 100111000100.00 0011 ¯ 2 = 1 . 00111001 × 2 11 . Temos 8   b i t s na mantissa e infinitos no nosso número, então arredondamos.

Consertando o expoente:

11 + 63 = 74 = 64 + 8 + 2 = 2 6 + 2 3 + 2 1

A representação no sistema será:

0   1001010   00111001

Passo 7

i Qual o valor verdadeiramente representado em cada caso acima?

Nas letras em que não arredondamos, o resultado está correto. Nas demais, temos que fazer a conversão:

a 265 (valor exato)

b 12.5 (valor exato)

c Nessa letra tivemos que cortar as casas decimais. Consequentemente o valor representado foi apenas a parte inteira - 445 .

d O valor representado foi - 0.000110011010 2 = - 2 - 4 + 2 - 5 + 2 - 8 + 2 - 9 + 2 - 11 = - 0.10009765625 .

e O valor representado foi - 1100,11010 2 = - 12,8125 .

f O valor representado foi 100111001000 2 = 2504

Passo 8

i i Qual o maior e o menor número positivo nele representável?

Maior número positivo:

0   1111110   11111111

- 1 0 ∙ 2 63 ∙ 2 - 2 - 8 = 1.84107152767 × 10 19

Menor número positivo na forma normalizada:

0   0000001   00000000

- 1 0 ∙ 2 - 62 ∙ 1 = 2.168404344971 × 10 - 19

Menor número positivo na forma não normalizada:

0   0000000   00000001

- 1 0 ∙ 2 - 62 ∙ 2 - 8 = 2 - 70 ≈ 8.470329472543 × 10 - 22

Passo 9

i i i Qual o menor número maior que 100 nele representável?

Primeiro vamos representar 100 nele:

100 2 = 50   e   r e s t o   0

50 2 = 25   e   r e s t o   0

25 2 = 12   e   r e s t o   1

12 2 = 6   e   r e s t o   0

6 2 = 3   e   r e s t o   0

3 2 = 1   e   r e s t o   1

1 2 = 0   e   r e s t o   1

Então temos que 100 10 = 1100100 2 = 1.10010000 × 2 6 já com as 8 casas decimais da mantissa. O número imediatamente seguinte seria:

  1.10010001 × 2 6 = 1100100.01 2 = 100.25 10

Você também poderia reparar que o 100 ocupa 6   b i t s da mantissa sobrando apenas 2   b i t s para a parte decimal. O menor número fracionário que se pode fazer com 2   b i t s é 0.25 , então o número imediatamente após de 100 nesse sistema tem que ser 100.25

Passo 10

i v Qual o maior número menor que 20 nele representável?

Mesmo esquema da última, vamos representar o 20 :

20 2 = 10   e   r e s t o   0

10 2 = 5   e   r e s t o   0

5 2 = 2   e   r e s t o   1

2 2 = 1   e   r e s t o   0

1 2 = 0   e   r e s t o   1

Então 20 10 = 10100 2 = 1.01000000 × 2 4 . O número imediatamente anterior seria:

1.00111111 × 2 4 = 10011.1111 2 = 19,9375 10

Analogamente ao anterior, o número 20 ocupa 4   b i t s da mantissa, sobrando mais 4 para a parte fracionária. A menor fração que podemos fazer nesse caso é 2 - 4 = 0.0625 . Então o número imediatamente anterior a 20 nesse sistema é 20 - 0.0625 = 19.9375

Resposta

a 0   1000111   00001001

b 0   1000010   10010000

c 1   1000111   10111101

d 1   0111011   10011010

e 1   1000010   10011010

f 0   1001010   00111001

i

a 265

b 12.5

c - 445 .

d - 0.10009765625 .

e - 12,8125 .

f 2504

i i Maior número positivo:

1.84107152767 × 10 19

Menor número positivo na forma normalizada:

2.168404344971 × 10 - 19

Menor número positivo na forma não normalizada:

8.470329472543 × 10 - 22

i i i 100.25

i v 19.9375

Exercícios de Livros Relacionados

Considere o sistema 𝐹 2,5 , 3,1 .b) Qual o maior número na base 10 que podemos representar neste sistema (sem fazer arredondamento)?
Considere o sistema 𝐹 10,4 , 4,4 .b) Represente os números 𝑥 1   =   1239.56     , 𝑥 2   =   550.12     , 𝑥 3   =   1.0045     , 𝑥 4   =   123456.7     e 𝑥 5   =− 0.0000001   nesse sistema.
Considere o sistema 𝐹 10,3 , 5,5 . Efetue as operações indicadas: 𝑖 ) 1.386 − 0.987 + 7.6485   𝑒   1.386 − 0.987 − 0.76485     𝑖 𝑖 ) 1.338   −   2.038 4.577   𝑒   1.338 4.577 − 2.038 4.577
Considere o sistema 𝐹 3,3 , 2,1 .a) Quantos e quais números podemos representar neste sistema?
Considere o sistema 𝐹 10,4 , 4,4 . Represente nesse sistema os números: 𝑥 1   =   4321.24     , 𝑥 2   =   − 0.0013523     , 𝑥 3   =   125.64     , 𝑥 4   =   57481.23     e 𝑥 5   =   0.00034