32 lines
710 B
Plaintext
32 lines
710 B
Plaintext
Procedure.i gray_encode(n)
|
|
ProcedureReturn n ! (n >> 1)
|
|
EndProcedure
|
|
|
|
Procedure.i gray_decode(g)
|
|
Protected bit = 1 << (8 * SizeOf(Integer) - 2)
|
|
Protected b = g & bit, p = b >> 1
|
|
|
|
While bit > 1
|
|
bit >> 1
|
|
b | (p ! (g & bit))
|
|
p = (b & bit) >> 1
|
|
Wend
|
|
ProcedureReturn b
|
|
EndProcedure
|
|
|
|
If OpenConsole()
|
|
PrintN("Number Gray Binary Decoded")
|
|
Define i, n
|
|
For i = 0 To 31
|
|
g = gray_encode(i)
|
|
Print(RSet(Str(i), 2, "0") + Space(5))
|
|
Print(RSet(Bin(g, #PB_Byte), 5, "0") + Space(2))
|
|
n = gray_decode(g)
|
|
Print(RSet(Bin(n, #PB_Byte), 5, "0") + Space(3))
|
|
PrintN(RSet(Str(n), 2, "0"))
|
|
Next
|
|
|
|
Print(#CRLF$ + #CRLF$ + "Press ENTER to exit"): Input()
|
|
CloseConsole()
|
|
EndIf
|