Converter Binário para Decimal

hoodieAlan

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:
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:
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:
ó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:
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...
 
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.
 
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:
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;
}
 
Back
Topo