• Nenhum resultado encontrado

NÚMEROS REAIS

No documento Estruturas de Dados I (páginas 31-37)

Repr odução pr oibida. A rt . 184 do C ódigo P enal e L ei 9.610 de 19 de f ev er eir o de 1998.

1111 e somando-se 1 a esse valor obtemos 1 0000 0000. Como o resultado tem 9 bits, o nono bit é descartado ficando apenas 0000 0000.

NÚMEROS REAIS

O conjunto dos números reais é formado por números com casas decimais além dos já conhecidos números inteiros. Assim, todo número inteiro é um número real, mas nem todo número real é um número inteiro. O 42 é um número inteiro e também um número pertencente ao conjunto dos números reais. O número 4,2 é um número real, mas não inteiro.

Se em um programa for necessário controlar a quantidade de produtos em estoque e os produtos não são fracionados, usa-se um número inteiro. Para guar- dar o preço do produto, é indicado um número real, já que alguns preços podem ser quebrados com complemento em centavos de reais.

Na computação, a forma mais utilizada para a representação de números reais é a notação de ponto flutuante. Segundo Tenenbaum (1995), existem vários tipos de notação de ponto flutuante, cada qual com características próprias. O conceito é que a representação de um número real se dá por um número, cha- mado mantissa (M), multiplicado por uma base (B) elevada a uma potência com expoente (E) inteiro.

M * BE

Vamos considerar, por exemplo, o número real 123,45 e que para represen- tá-lo como ponto flutuante a base seja fixada em 10 (B=10). A notação ficaria:

12345 * 10-2

Como 10-2 = 0,01, então 12345 * 0,01 = 123,45. Note que o número (mantissa)

Quando o primeiro bit da esquerda de uma variável numérica for 1, significa que o número é negativo desde que a variável suporte valores menores do que zero (signed).

Repr odução pr oibida. A rt. 184 do C ódigo P enal e L ei 9.610 de 19 de f ev er eir o de 1998.

é fixo e que a casa decimal (vírgula) “flutua” no número uma quantidade de alga- rismos definida pela potência formada pela base elevada ao expoente.

A notação de ponto flutuante pode variar de acordo com a arquitetura do hardware ou das regras definidas pelo compilador. O número 1000, por exemplo, pode ser escrito como 1000*100, 100 *101, 10*102 ou 1*103. O mais usualmente

utilizado para representar um número real é uma string de 32 bits, sendo os pri- meiros 24 bits reservados para a mantissa e os últimos 8 para o expoente, com a base fixa em 10.

A representação em binário de 24 bits do número decimal inteiro 12345 é 0000 0000 0011 0000 0011 1001, e a representação em complemento de 2 em 8 bits de -2 é 1111 1110. Seguindo esses conceitos, a representação de 123,45 se dá pela seguinte string de 32 bits:

0000 0000 0011 0000 0011 1001 1111 1110

Vejamos alguns exemplos de números em notação de ponto flutuante:

10 0000 0000 0000 0000 0000 1010 0000 0000 100 0000 0000 0000 0000 0110 0100 0000 0000 1000 0000 0000 0000 0011 1110 1000 0000 0000 0,001 0000 0000 0000 0000 0000 0001 1111 1101 10421,12 0000 1111 1110 0110 1100 0000 1111 1110

A vantagem da notação de ponto flutuante é que ela permite a representação de valores absolutos muito grandes ou muito pequenos. Na notação descrita

nesta unidade, o maior número que pode ser representado é 223-1

*10127, que é

um número muito grande, e o menor é 10-128, que é um número muito pequeno.

O limitante com o qual os números podem ser escritos está diretamente rela- cionado à quantidade de bits significativos na mantissa. Nem todo número entre o intervalo do menor e do maior podem ser representados. No formato aqui utilizado, 24 bits são reservados para a mantissa, sendo o primeiro usado para identificar se ele é positivo ou negativo, restando apenas 23 bits significativos. Dessa forma, o número 10 milhões e 1 (que exige 24 dígitos binários significa-

tivos na mantissa) precisa ser aproximado para 10 milhões, (1*107) que exige

©shutterstock Considerações Finais Repr odução pr oibida. A rt . 184 do C ódigo P enal e L ei 9.610 de 19 de f ev er eir o de 1998.

CONSIDERAÇÕES FINAIS

A grande maioria dos profissionais que trabalham com computador tem uma visão de alto nível do que acontece, ou seja, veem e interagem apenas com o resultado do processo, sem ter acesso e conhecimento de como ele se desenvolve.

Nesta unidade, você teve a oportunidade de observar melhor como as coi- sas acontecem em baixo nível, no nível em que o computador trabalha. Agora quando você for criar um programa e definir uma variável, você com certeza irá lembrar que ela não é só um espaço reservado na memória, ela é uma estrutura que define como aquelas informações serão lidas e trabalhadas.

Para poder trabalhar com estruturas de dados mais complexos, precisamos primeiramente ver as estruturas mais simples, e para isso é necessário saber como as informações são representadas nos principais sistemas numéricos. Esse foi o objetivo desta unidade.

Na próxima unidade começaremos fazendo um pequeno resumo sobre vari- áveis para armazenamento de valores múltiplos que são os vetores, matrizes e registros. Em seguida, aplicaremos o que foi visto até o momento e apresentare- mos duas das mais simples e mais importantes estrutura de dados: pilhas e filas.

<http://youtube.com.br/watch?v=ntylzQWvzCA>. <http://youtube.com.br/watch?v=TsoXOQ8ZEa0>. <http://pontov.com.br/site/index.php/cpp/41-visual-c/59-como-utilizar-o-visual-c-parte-1>. <http://pontov.com.br/site/index.php/ cpp/41-visual-c/72-como-utilizar-o-visual-studio-c-parte-2>. <http://pontov.com.br/site/index.php/ cpp/41-visual-c/73-como-utilizar-o-visual-studio-c-parte-3>.

1. Uma string de 8 bits pode conter diversos tipos de dados diferentes. Conside- rando que as strings a seguir possuam um valor decimal inteiro positivo ou dois números em hexadecimal de 4 bits cada, efetue a conversão conforme o exem- plo da letra a:

a) 1010 1010

Para encontrar o valor em decimal de uma sequência de bits, basta somar as potên- cias de 2 elevado à posição de relevância do bit, para os bits de valor 1.

1 * 27 1 * 128 128 0 * 26 0 * 64 0 1 * 25 1 * 32 32 0 * 24 0 * 16 0 1 * 23 1 * 8 8 0 * 22 0 * 4 0 1 * 21 1 * 2 2 0 * 20 0 * 1 0 Total 170

Para encontrar o valor hexadecimal, basta calcular o valor decimal de cada grupo de 4 bits e comparar com o conjunto de valores em hexadecimal (de 0 a F).

BINÁRIO DECIMAL HEXADECIMAL

1010 10 A 1010 10 A Resposta: Binário = 1010 1010 Decimal = 170 Hexadecimal = AA a) 1100 0011 b) 1100 1100 c) 1101 1111 d) 0000 1000

2. Encontre o valor decimal, o número negativo em Complemento de 1 e Comple- mento de 2 das strings de bits a seguir, conforme o exemplo da letra a:

a) 0010 1010

Para encontrar o valor em decimal de uma sequência de bits, basta somar as potên- cias de 2 elevado à posição de relevância do bit, para os bits de valor 1.

0 * 27 0 * 128 0 0 * 26 0 * 64 0 1 * 25 1 * 32 32 0 * 24 0 * 16 0 1 * 23 1 * 8 8 0 * 22 0 * 4 0 1 * 21 1 * 2 2 0 * 20 0 * 1 0 Total 42

Para encontrar o Complemento de 1 de uma string de bits, basta inverter o valor de todos os seus bits.

42

0 0 1 0 1 0 1 0

-42 (Complemento de 1)

1 1 0 1 0 1 0 1

Para encontrar o Complemento de 2, basta somar 1 ao Complemento de 1 do número. -42 (Complemento de 2) 1 1 0 1 0 1 1 0 a) 0111 1111 b) 0000 0000 c) 0110 0011 d) 0101 1010

3. Sempre que uma string de bits contiver o valor 1 no primeiro bit da direita o número será ímpar? Por quê?

4. Sempre que uma string de bits contiver o valor 1 no primeiro bit da esquerda o número será negativo? Por quê?

UNID

ADE

II

No documento Estruturas de Dados I (páginas 31-37)

Documentos relacionados