37 lines
646 B
Plaintext
37 lines
646 B
Plaintext
include c:\cxpl\codes; \intrinsic 'code' declarations
|
|
|
|
func Gray2Bin(N); \Convert N from Gray code to binary
|
|
int N;
|
|
int S;
|
|
[S:= 1;
|
|
repeat N:= N>>S | N;
|
|
S:= S<<1;
|
|
until S=32;
|
|
return N;
|
|
]; \Gray2Bin
|
|
|
|
|
|
func Bin2Gray(N); \Convert N from binary to Gray code
|
|
int N;
|
|
return N>>1 | N;
|
|
|
|
|
|
proc BinOut(N); \Output N in binary
|
|
int N;
|
|
int R;
|
|
[R:= N&1;
|
|
N:= N>>1;
|
|
if N then BinOut(N);
|
|
ChOut(0, R+^0);
|
|
]; \BinOut
|
|
|
|
|
|
int N, G;
|
|
[for N:= 0 to 31 do
|
|
[BinOut(N); ChOut(0, 9\tab\);
|
|
G:= Bin2Gray(N);
|
|
BinOut(G); ChOut(0, 9\tab\);
|
|
BinOut(Gray2Bin(G)); CrLf(0);
|
|
];
|
|
]
|