31 lines
586 B
Plaintext
31 lines
586 B
Plaintext
' Gray code
|
|
PROGRAM "graycode"
|
|
VERSION "0.0001"
|
|
|
|
DECLARE FUNCTION Entry()
|
|
INTERNAL FUNCTION Encode(v&)
|
|
INTERNAL FUNCTION Decode(v&)
|
|
|
|
FUNCTION Entry()
|
|
PRINT "decimal binary gray decoded"
|
|
FOR i& = 0 TO 31
|
|
g& = Encode(i&)
|
|
d& = Decode(g&)
|
|
PRINT FORMAT$(" ##", i&); " "; BIN$(i&, 5); " "; BIN$(g&, 5);
|
|
PRINT " "; BIN$(d&, 5); FORMAT$(" ##", d&)
|
|
NEXT i&
|
|
END FUNCTION
|
|
|
|
FUNCTION Encode(v&)
|
|
END FUNCTION v& ^ (v& >> 1)
|
|
|
|
FUNCTION Decode(v&)
|
|
result& = 0
|
|
DO WHILE v& > 0
|
|
result& = result& ^ v&
|
|
v& = v& >> 1
|
|
LOOP
|
|
END FUNCTION result&
|
|
|
|
END PROGRAM
|