unsigned int graydecode(unsigned int gray)
{
unsigned int bin;
for (bin = 0; gray; gray >>= 1) {
bin ^= gray;
}
return bin;
}
function GrayToBin(b: integer): integer;
var g: integer;
begin
g := 0;
while b > 0 do begin
g := g xor b;
b := b shr 1;
end;
GrayToBin := g;
end;