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.


