Mais um blog inútil.

Janeiro 20, 2008

Conversor de Binário para Decimal

Filed under: 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”

  1. sadik diz:

    STOP POSTING!

    ps: nao percebi um caralho desse post lolol

  2. luminoso diz:

    que codigo bonito!
    de que forma isso me ajuda a ter mais mulheres?

  3. sadik diz:

    é 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!

  4. dongs diz:

    Hot.

    Proximo passo: generalizar para base N -> base M

  5. luminoso diz:

    tesão. vou ja compilar formol

  6. dark diz:

    hahaha....
    Giro era como o dongs disse...
    Eu ainda não fiz um de base N -> base M, mas fiz um de base N -> 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<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;
    }

  7. sadik diz:

    altos tijolos

    vou ja compilar cimento e areia

Leave a Reply for luminoso

widgeon
widgeon
widgeon
widgeon