TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Representação de numero inteiros usando linguagem C

Por:   •  12/7/2015  •  Trabalho acadêmico  •  2.000 Palavras (8 Páginas)  •  901 Visualizações

Página 1 de 8

Universidade Federal do Amazonas (Ufam)

Instituto de Computação (Icomp)

Ciência da Computação – Bacharelado

Disciplina: Sistemas Lógicos

Prof. Leandro Galvão

Representação de Números Inteiros

 Usando Linguagem C

Luiz Gonzaga da Mota Ferreira Júnior

lgmfj@icomp.ufam.edu.br

Marcos Filipe Ferreira de Oliveira

mffo@icomp.ufam.edu.br

Manaus – AM

2013

1. Introdução

Neste trabalho apresentaremos os resultados e explicações de vários casos testes, em atividades laboratoriais, de representação de números inteiros usando a linguagem C.

        O objetivo dessas atividades é a execução e compilação do nosso primeiro programa em C, compreendendo as funções básicas de entrada e saída da linguagem. E compreender a notação complemento de 2 para a representação de números inteiros.

2. Atividades

Atividade 1: Entrada e Saída de Dados Formatados em um Programa em C.

Tabela 01 – Entrada e saída de dados

Execução

Leitura (a)

Leitura (b)

Impressão (a)

Impressão (b)

1

1

1

1

1

2

-1

-1

-1

4294967295

3

2147483648

2147483648

-2147483648

2147483648

4

4294967296

4294967296

0

0

1. Em memória de máquina os números são representados em forma de conjuntos de bits {0,1}. Na declaração da variável a como sendo do tipo int (inteiro sinalizado) estamos dizendo que a sua faixa de valores vai de -2147483648 (-231) até 2147483647 (231 - 1). Já na declaração da variável b como sendo do tipo unsigned (inteiro não sinalizado), sua faixa de valores vai de 0 (zero) até 4294967295 (232 - 1).

Como os números são guardados na memória no formato binário, a leitura de uma variável, seja usando a string de controle %d ou %u, não altera o seu valor binário. O que muda é a forma de interpretar os seus bits. Na impressão a string %d irá tratar o número com sendo sinalizado (complemento de 2) e a string %u como sendo não sinalizado (binário puro).

Vejamos um exemplo simples com a representação de números decimais usando apenas 3 bits na Tabela 02:

Tabela 02 – Forma de interpretação dos dados

Entrada (decimal)

Valor na memória

Saída A

(sinalizada)

Saída B

(não sinalizada)

-2

110

-2

6

-1

111

-1

7

0

000

0

0

1

001

1

1

2

010

2

2

3

011

3

3

4

100

-4

4

5

101

-3

5

6

110

-2

6

7

111

-1

7

8

000

0

0

        

Imaginemos agora a Tabela 02 como sendo cíclica, na entrada do número decimal 1 será armazenado na memória o binário 001, que nas duas saídas terá a mesma interpretação. Na entrada do decimal -1 será armazenado na memória o binário 111, que na saída A será interpretado como -1, mas na saída B será interpretado como 7. Na entrada do decimal 4 será armazenado na memória o binário 100 que na saída A teremos -4, pois 4 está fora da faixa de valores representáveis desta saída, e na saída B teremos o 4. E quando na entrada temos o decimal 8 será armazenado o binário 000 que nas duas saídas terá o 0 como resultado, pois o 8 está fora das suas faixas de representatividade.

Desta forma a explicação exposta para a Tabela 02 é a mesma que ocorre para as quatro execuções da Tabela 01.

           OBS: uma coisa a ser notada nos nossos experimentos foi a forma de interpretação dos valores do tipo unsigned no Linux. Quando fazíamos a leitura via teclado com números superiores ao que a variável suporta, ao invés de iniciar o ciclo novamente, a saída era a subtração do valor máximo da variável com o valor que era pra ser a saída esperada.

           Testamos no Dev – C com o sistema Windows e deu certo. Voltamos a fazer o teste com o Linux novamente, mas com o valor sendo atribuído diretamente no código fonte e deu certo. Em fim, essa nota é apenas uma observação feita nos nossos experimentos para a atividade1 e não sabemos o motivo desse comportamento estranho de resposta.

Atividade 2: Impressão de Inteiros no Formato Hexadecimal.

 a) A string de controle %d mostra o número no seu formato decimal e %X no seu formato hexadecimal com letras maiúsculas.

...

Baixar como (para membros premium)  txt (15.3 Kb)   pdf (230.3 Kb)   docx (315.7 Kb)  
Continuar por mais 7 páginas »
Disponível apenas no TrabalhosGratuitos.com