Pascal: Convert Denary-Binary, Binary-Denary

The following program converts between binary and denary.

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

var dn,dn2:integer;
bs,bn:string;

procedure denary_binary (dn:integer; var binary_text:string);
var
 i :integer;
 binary:array[1..8] of integer;
 binary_string:string[8];
begin
 binary_string:=''; //must initialise to empty string or else errors arise
 for i:= 1 to 8 do
 begin
  binary[i]:=dn mod 2; //find binary number, 0 or 1 and put into binary array
  dn:=dn div 2; //halve current value of denary number - e.g. 19, 9, 4, 2, 1, 0, 0, 0
 end;
 for i:=8 downto 1 do //binary digits are in reverse order so reverse them
 binary_string:=binary_string + inttostr(binary[i]); //copy binary array into binary string in reverse order
 binary_text:=binary_string; //output result, returned via var parameter
end;

function power(a:integer):integer; //function returns 2 ^ a
var
 i,c:integer;
begin
 c:=1;
 for i:= 1 to a do
 c:= c * 2; //multiply repeatedly by 2
 power:=c;
end;

procedure binary_denary(bn:string; var total:integer);
var
 binary:array[1..8] of integer;
 i, d1: integer;
begin
 total:=0;
 if (length (bn)=8) then
 for i:=1 to 8 do
 begin
  d1:= strtoint(bn[i]);
  if d1 = 1 then //check for 1 or 0
  total:=total + power(8-i); //2 to power 7,6,5,4,3,2,1,0
 end;
end;

begin
 writeln('Enter a decimal number');
 readln(dn);
 denary_binary(dn, bs);
 writeln(bs);
 writeln('Enter an 8 bit binary number');
 readln(bn);
 binary_denary(bn,dn2);
 writeln(dn2);
 readln;
end.

 

Back to questions