19 de outubro de 2010

Algoritmo e Programação: Conversão de Decimal para Binário


Parte Inteira

A conversão do número inteiro, de decimal para binário, será feita da direita para a esquerda, isto é, determina-se primeiro o algarismos das unidades ( o que vai ser multiplicado por 20 ) , em seguida o segundo algarismo da direita ( o que vai ser multiplicado por 21 ) etc...

A questão chave, é observar se o número é par ou ímpar. Em binário, o número par termina em 0 e o ímpar em 1. Assim determina-se o algarismo da direita, pela simples divisão do número por dois; se o resto for 0 (número par) o algarismo da direita é 0; se o resto for 1 (número ímpar) o algarismo da direita é 1.

Por outro lado, é bom lembrar que, na base dez, ao se dividir um número por dez, basta levar a vírgula para a esquerda. Na base dois, ao se dividir um número por dois, basta levar a vírgula para a esquerda. 

Assim, para se determinar o segundo algarismo, do número em binário, basta lembrar que ele é a parte inteira do número original dividido por dois, abandonado o resto.
Vamos converter 25 de decimal para binário.

Parte Fracionária do Número

A conversão da parte fracionária do número será feita, algarismo a algarismo, da esquerda para a direita, baseada no fato de que se o número é maior ou igual a 0,5 , em binário aparece 0,1, isto é, o correspondente a 0,5 decimal.

Assim, 0,6 será 0,1_ _ ..., ao passo que 0,4 será 0,0_ _ ...

Tendo isso como base, basta multiplicar o número por dois e verificar se o resultado é maior ou igual a 1. Se for, coloca-se 1 na correspondente casa fracionária, se 0 coloca-se 0 na posição. Em qualquer dos dois casos, o processo continua, lembrando-se, ao se multiplicar o número por dois, a vírgula move-se para a direita e, a partir desse ponto, estamos representando, na casa à direita, a parte decimal do número multiplicado por dois.

Vamos ao exemplo, representando, em binário, o número 0,625.

0,625 x 2 = 1,25 , logo a primeira casa fracionária é 1.

Resta representar o 0,25 que restou ao se retirar o 1 já representado.
0,25 x 2 = 0,5 , logo a segunda casa é 0.

Falta representar o 0,5 .
0,5 x 2 = 1 , logo a terceira casa é 1.
0,62510 = 0,1012

Quando o número tiver parte inteira e parte fracionária, podemos calcular, cada uma, separadamente.
Tentando representar 0,8, verifica-se que é uma dízima.

0,8 = 0,110011001100....

Da mesma forma, vê-se que 5,8 = 101,11001100... , também uma dízima.

11,6 = 1011,10011001100... o que era óbvio, bastaria deslocar a vírgula uma casa para a direita, pois 11,6 = 2 x 5,8 .

Como inicialmente estamos aprendendo a programar em C, esse programa abaixo converte um número Decimal para Binário, dê uma olhada:







view plaincopy to clipboardprint?
  1. #include <stdio.h>
  2.  
  3. int main(){
  4. int n;
  5. scanf("%d",&n);

  6. int v[32];

  7. int i;
  8. for(i=0; i<32; i++){

  9. v[i]=-1;

  10. }

  11. int index = 0;
  12. while(n>0){

  13. v[index]=n%2;
  14. index++;
  15. n=n/2;
  16. }

  17. int j;
  18.  
  19. for(j=index-1;j>=0;j--){

  20. printf("%d", v[j]);
  21. }

  22. printf("\n");

  23. return 0;

  24. }

2 comentários:

Anônimo disse...

como poço fazer um programa dividir a parte inteira da ffracionaria

Anônimo disse...

Esse programa esta usando a função itoa?

Postar um comentário

 
Design by @cleidimarviana | Bloggerized by Cleidimar Viana - Diário de Sistema