Mais um blog inútil.

Janeiro 20, 2008

Conversor de Binário para Decimal

Arquivado em: coding, useless — amg @ 21:34

O sadik pediu-me para não postar mais, mas vou postar…

Este é um programinha que fiz o ano passado em Programação (Pascal), era para se utilizar operações com strings mas utilizei o método (010 = 0 * 2 ^ 0 + 1 * 2 ^ 1 + 0 * 2 ^ 2 = 2)
O código é estranho, até usei uns ifs que não sei porquê, mas resolveram os problemas que tinha (caso o último número fosse 0 acrescentava um valor: 010 ficava 3, 0100 ficava 5, mas já 011 ficava 3 e 0101 ficava 5):

Program bin_dec;

    function expoente(x,y:longint):longint;
        var
            z,n:longint;
    begin
        n := x;
        for z := 2 to y do
            n := n * x;
        expoente := n;
    end;

    var
        num, aux, multi, digito, valor, soma:longint;
        exp:integer;
    begin
        write('Num (bin): ');
        readln(num);
        multi := 10;
        aux := num;
        exp := 0;
        soma := 0;
        while (aux <> 0) do
        begin
            digito := aux mod 10;
            aux := aux div 10;
            multi := multi * 10;
            if (exp = 0) and (digito = 1) then
            begin
                soma := 1;
                exp := 1;
            end
            else
            begin
                valor := expoente(2,exp);
                exp := exp + 1;
                soma := soma + digito * valor;
            end;
        end;
        writeln(num,'(bin) = ',soma,'(dec)');
        readln;
    end.

Podem testar com o FPC.

EDIT: Coloquei blocos de identação para o código ficar mais bonito.

8 comentários a “Conversor de Binário para Decimal”

  • sadik
    STOP POSTING!

    ps: nao percebi um caralho desse post lolol
  • luminoso
    que codigo bonito!
    de que forma isso me ajuda a ter mais mulheres?
  • sadik
    é facil luminoso!

    vais ter com elas e começas a falar desse codigo e tal e vai haver uma altura em que elas vao meter uma cara de confusas, tipo.. mas que raio.. que caralho ta ele a falar? e é nessa altura que sacas do pano com formol e levas à cara da gaja. ela cai po lado, tu vais lhe ao cu e deixas um papel ao lado dela a dizer: bem vindo ao clube da sida! enjoy it!
  • dongs
    Hot.

    Proximo passo: generalizar para base N -&gt; base M
  • luminoso
    tesão. vou ja compilar formol
  • dark
    hahaha....
    Giro era como o dongs disse...
    Eu ainda não fiz um de base N -&gt; base M, mas fiz um de base N -&gt; base 10.
    Aqui esta o código em C.

    #include
    #include
    #include
    #include
    #include
    #define NUMBERSIZE 10
    #define BASESIZE 2

    int main(int argc, char **argv) {
    char Snumber[NUMBERSIZE];
    char Sbase[BASESIZE];
    int i;
    int base;
    int nnumber=0;
    int l;
    printf("Indique a base do numero (de 2 a 16): ");
    gets(Sbase);

    printf("Indique o número positivo: ");
    gets(Snumber);

    base=atoi(Sbase);

    if(base16){
    fputs("Base Inválida.",stderr);
    return 1;
    }

    l=strlen(Snumber);
    for(i=0;i9)
    aux=(int)(toupper(Snumber[i])-55);
    if(aux=base){
    fputs("Número Inválido nesta base.\n",stderr);
    return 2;
    }
    }

    for(i=0;i&lt;l;i++){
    int g=Snumber[l-i-1]-48;
    if(g9)
    g=toupper(Snumber[l-i-1])-55;
    int p=(int)pow(base,i);
    nnumber+=g*p;
    }

    printf("O numero %s da base %d é %d na base 10.\n",Snumber,base,nnumber);
    return 0;
    }
  • sadik
    altos tijolos


    vou ja compilar cimento e areia
  • Jaqui
    Esse site mostra a conversão passo a passo:

    http://www.calculadoraonline.com.br/view/conversao-binario-passo-a-passo.php