1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Converter Binário para Decimal

Discussão em 'Programação' iniciada por OxyGen #, 13 de Maio de 2010. (Respostas: 8; Visualizações: 4154)

  1. OxyGen #

    OxyGen # What is folding?

    Boas a todos...

    Por acaso alguém me pode ajudar a fazer um programa que converta Binário para Decimal? Já fiz a conversão de decimal para binário mas agora não consigo fazer o contrário...

    Por acaso não há por aí nenhuma alma caridosa que me ajude? Tem de ser uma função que tenha o valor em binário como argumento e depois devolva o valor em decimal...

    Apenas numeros entre 0 e 9...

    Cumps
     
    Última edição: 13 de Maio de 2010
  2. errandum

    errandum Power Member

    num divides e usas os restos... no outro fica o primeiro número * 2^0 + segundo numero * 2^1 + o terceiro numero * 2^2, etc.

    ex: 101 - 1*(2^0)+0*(2^1)+1*(2^2) = 1 + 0 + 4 = 5

    EDIT: Se a dúvida é "como ir buscar o elemento <n>", então o 1º é o resto da divisão por 10, para o segundo divides por 10 e vês o resto da divisão por 10 desse, para o terceiro divides de novo e vez o resto da divisão desse, por aí fora.
     
    Última edição: 13 de Maio de 2010
  3. OxyGen #

    OxyGen # What is folding?

    sinceramente não estou a perceber minimamente o que queres dizer...

    EDIT:Eu sei converter à mão... o meu problema é no codigo...
     
    Última edição: 13 de Maio de 2010
  4. errandum

    errandum Power Member

    óbvio que vais ter que fazer mais que isto, mas corre este código e vê se entendes:

    Código:
            int binario = 1010101;
            while(binario > 0)
            {
                System.out.println(binario%10);
                binario /=10;
            }
    
    se for em C, será printf("%d\n",binario%10); em vez do System.out.println. Assumi java, mas não disseste a linguagem.
     
    Última edição: 13 de Maio de 2010
  5. OxyGen #

    OxyGen # What is folding?

    Sei as 2... quer java quer C....

    implementa isso mais genérico... ou seja sem saberes qual o valor que te vai chegar de uma outra funçao...
     
  6. errandum

    errandum Power Member

    Não percebeste. Eu não estou a fazer o trabalho por ti, só estou a dizer-te como é que vais buscar os valores um a um. Sendo um método, seria:

    Código:
    static void nomeDoMetodo(int binario)
    {
            while(binario > 0)
            {
                System.out.println(binario%10);
                binario /=10;
            }
    }
    
    óbvio que em vez de fazeres print, se calhar deves ter que fazer algo a ver com as contas que meti ali em cima... Se sabes a teoria, se já tens os valores um a um, com poucas modificações consegues mudar esse ciclo while para converter de binario para inteiro... Eu proponho, por exemplo, um contador para saber qual o expoente ( Math.pow(2,contador) ), por exemplo.
     
  7. OxyGen #

    OxyGen # What is folding?

    Tipo isto?

    Código:
    unsigned int bin2dec(unsigned char decimal)
    
    {
         int total = 0;
         int peso = 1;
      
         while(decimal > 0)
         {
              total += decimal % 10 * peso;
              decimal = decimal / 10;
              peso = peso * 2;
              }
    
          return total;
    
    } 
     
    Última edição: 14 de Maio de 2010
  8. errandum

    errandum Power Member

    Tenho a nítida noção que copiaste o teu anterior de alguém e não fazes puto ideia do que estás a fazer...
     
  9. Boas,

    Esta é a forma mais directa que me lembrei para fazer isto:

    Código:
    unsigned int bin2dec(unsigned int n)
    {
        unsigned int r,m;
    
        for(m=1,r=m&n;m;r^=n&(m<<=1));
    
        return m;
    }
    
     

Partilhar esta Página