20 lines
374 B
Scala
20 lines
374 B
Scala
def encode(n: Long) = n ^ (n >>> 1)
|
|
|
|
def decode(n: Long) = {
|
|
var g = 0L
|
|
var bits = n
|
|
while (bits > 0) {
|
|
g ^= bits
|
|
bits >>= 1
|
|
}
|
|
g
|
|
}
|
|
|
|
def toBin(n: Long) = ("0000" + n.toBinaryString) takeRight 5
|
|
|
|
println("decimal binary gray decoded")
|
|
for (i <- 0 until 32) {
|
|
val g = encode(i)
|
|
println("%7d %6s %5s %7s".format(i, toBin(i), toBin(g), decode(g)))
|
|
}
|