English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
Todas as categorias

Serão dois algorítimos: Um para conversão de números da base 2 para base 10;
Outro para conversão de números da base 10 para base 2 (parte inteira e fracionária, precisão de 6 dígitos após a vírgula).
Pode ser feito em qualquer linguagem de programação (java, C, delphi, pascal, portugol, etc...)

2007-03-21 01:46:51 · 1 respostas · perguntado por Pikachu 3 em Ciências e Matemática Outras - Ciências

1 respostas

Cara Colega,

O algoritmo não é difícil, mas você precisa conhecer o processo de conversão, quando o número apresenta casas decimais. Imagino que esteja fazendo alguma disciplina relacionada a arquitetura de computadores ou fundamentos da matemática computacional.

Temos que separar o algoritmo em dois casos:

A) Conversão de DECIMAL para BINÁRIO
==================================
Neste caso, um bom método é o de DIVISÕES SUCESSIVAS.
Por exemplo:

Vamos converte o número 9 na base decimal para binário.

1o.) Começamos efetuando a divisão inteira do número 9 por 2:

9 / 2 quociente = 4 resto = 1

2o.) pegamos o quociente da última divisão e novamente dividimos.
4 / 2 quociente = 2 resto = 0

3o.) continuamos o processo do 2o. passo

2 / 2 quociente = 1 resto = 0

4o.) o processo para quando encontramos o quociente zero ou quando chegamos ao limite da capacidade de representação.

1 / 2 quociente = 0 resto = 1

5o.) A sequência de restos que obtivemos foi a seguinte:

1 - 0 - 0 - 1

6o.) Invertemos a ordem de apresentação destes valores, ou seja, colocamos de trás para frente (neste exemplo específico nada muda):

1 - 0 - 0 - 1

Este é o valor do número 9 na base 2, ou seja:
DEC(9) = BIN(1001)

OBSERVAÇÃO: Para gerar este número recomendo que utilize um vetor para armazenar os dígitos binários.

B) Conversão de BINÁRIO para DECIMAL
==================================
Neste caso realizamos a operação inversa (multiplicação por 2). O método é conhecido como multiplicações sucessivas.
Vamos supor que desejamos converter
BIN(1011) para a forma DECIMAL.

1o.) Cada posição do número possui um ordem (k) de grandeza. Esta ordem cresce da direita para a esquerda e começa em zero. Logo, nosso número é descrito assim;

1 - ordem 3
0 - ordem 2
1 - ordem 1
1 - ordem 0

2o.) Efetuamos a multiplicação de cada dígito do número binário por 2^k onde k é a ordem de grandeza do dígito.
Teremos:

1 * 2^3 = 8
0 * 2^2 = 0
1 * 2^1 = 2
1 * 2^0 = 1

3o.) Efetuamos a soma de todos os resultados da etapa anterior.

8 + 0 + 2 + 1 = 11

4o.) Logo, 11 é a forma decimal do número 1011, ou seja:

bin(1011) = dec(11)

OBSERVAÇÃO: Para gerar este número recomendo que utilize um vetor para armazenar os dígitos binários.

Se tiver mais alguma dúvida quanto ao processo pode enviar um e-mail para mim. Considerei desnecessário colocar na forma de portugol, pois o algoritmo é relativamente simples. Quanto a implementação, dependendo da linguagem de programação a ser utilizada, haverá algumas pequenas diferenças, nada realmente preocupante.

2007-03-21 02:40:38 · answer #1 · answered by lucio_patrocinio 4 · 2 0

fedest.com, questions and answers