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; PrintLn('decimal binary gray decoded'); var i : Integer; for i:=0 to 31 do begin var g := Encode(i); var d := Decode(g); PrintLn(Format(' %2d %s %s %s %2d', [i, IntToBin(i, 5), IntToBin(g, 5), IntToBin(d, 5), d])); end;