Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
45
Task/Gray-code/Delphi/gray-code.delphi
Normal file
45
Task/Gray-code/Delphi/gray-code.delphi
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
program GrayCode;
|
||||
|
||||
{$APPTYPE CONSOLE}
|
||||
|
||||
uses SysUtils;
|
||||
|
||||
function Encode(v: Integer): Integer;
|
||||
begin
|
||||
Result := v xor (v shr 1);
|
||||
end;
|
||||
|
||||
function Decode(v: Integer): Integer;
|
||||
begin
|
||||
Result := 0;
|
||||
while v > 0 do
|
||||
begin
|
||||
Result := Result xor v;
|
||||
v := v shr 1;
|
||||
end;
|
||||
end;
|
||||
|
||||
function IntToBin(aValue: LongInt; aDigits: Integer): string;
|
||||
begin
|
||||
Result := StringOfChar('0', aDigits);
|
||||
while aValue > 0 do
|
||||
begin
|
||||
if (aValue and 1) = 1 then
|
||||
Result[aDigits] := '1';
|
||||
Dec(aDigits);
|
||||
aValue := aValue shr 1;
|
||||
end;
|
||||
end;
|
||||
|
||||
var
|
||||
i, g, d: Integer;
|
||||
begin
|
||||
Writeln('decimal binary gray decoded');
|
||||
|
||||
for i := 0 to 31 do
|
||||
begin
|
||||
g := Encode(i);
|
||||
d := Decode(g);
|
||||
Writeln(Format(' %2d %s %s %s %2d', [i, IntToBin(i, 5), IntToBin(g, 5), IntToBin(d, 5), d]));
|
||||
end;
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue