Ferramentas de Usuário

Ferramentas de Site


dev_geral:pascal:snippet:dec2bin

Conversor Decimal-Binário

De Decimal para Binário

Versão 1 - menos estável

function DecToBin(dec:longint) : string;
var i: Integer;
  bin01, finalbin, finalstep: string;
begin
  if dec > 0 then begin
    repeat
    bin01 := '0';
    if (dec mod 2) = 1 then bin01 := '1';
    finalbin := finalbin + bin01;
    dec := (dec div 2);
    until (dec div 2) = 0;
    if not(finalbin = '1') or (finalbin = '10') or (finalbin = '0') then begin
       finalbin := finalbin + '1';
    end;
    for i := Length(finalbin) downto 0 do begin
        finalstep := (finalstep + finalbin[i]);
    end;
    DecToBin := finalstep;
    end
  else DecToBin := '0';
end;    

Versão 2 - mais estável

function DecToBin(dec:longint) : string;
var
  mask : longint;
  idx : integer;
begin
  mask := $00000001;
  Result := '                                ';
  idx := 32;
  while idx > 0 do begin
    if (dec and mask) = 0 then Result[idx] := '0'
    else                       Result[idx] := '1';
    mask := mask shl 1;
    Dec(idx);
  end;
end;

De Binário para Decimal

function BinToDec(bin:string) : string;
var currHeading, intBinChar, x, i: Integer;
  dec: Real;
begin
  if StrToFloat(bin) > 0 then begin
    dec := 0;
    currHeading := 0;
    FOR i := Length(bin) DOWNTO 0 DO
    Begin
       IF currHeading > 0 THEN currHeading := currHeading * 2
       ELSE currHeading := 1;
       Val(bin[i], intBinChar, x);
       dec := dec + (intBinChar * currHeading);
    end;
    BinToDec := FloatToStr(dec);
    end
  else BinToDec := '0';
end;
dev_geral/pascal/snippet/dec2bin.txt · Última modificação em: 2018/05/14 21:37 (edição externa)