: >gray ( n -- n ) dup 2/ xor ;
: gray> ( n -- n )
0 1 31 lshift ( g b mask )
begin
>r
2dup 2/ xor
r@ and or
r> 1 rshift
dup 0=
until
drop nip ;
: test
2 base !
32 0 do
cr i dup 5 .r ." ==> "
>gray dup 5 .r ." ==> "
gray> 5 .r
loop
decimal ;