Conversor de Binário para Decimal
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.
STOP POSTING!
ps: nao percebi um caralho desse post lolol
que codigo bonito!
de que forma isso me ajuda a ter mais mulheres?
é 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!
Hot.
Proximo passo: generalizar para base N -> base M
tesão. vou ja compilar formol
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;
}
altos tijolos
vou ja compilar cimento e areia
Esse site mostra a conversão passo a passo:
http://www.calculadoraonline.com.br/view/conversao-binario-passo-a-passo.php