RosettaCodeData/Task/Gray-code/Phix/gray-code.phix

22 lines
441 B
Plaintext

function gray_encode(integer n)
return xor_bits(n,floor(n/2))
end function
function gray_decode(integer n)
integer r = 0
while n>0 do
r = xor_bits(r,n)
n = floor(n/2)
end while
return r
end function
integer e,d
puts(1," N Binary Gray Decoded\n"&
"== ===== ===== =======\n")
for i=0 to 31 do
e = gray_encode(i)
d = gray_decode(e)
printf(1,"%2d %05b %05b %2d\n",{i,i,e,d})
end for