def gray_encode(n):
    return n ^ n >> 1
 
def gray_decode(n):
    m = n >> 1
    while m:
        n ^= m
        m >>= 1
    return n
 
 
if __name__ == '__main__':
    print("DEC,   BIN =>  GRAY => DEC")
    for i in range(32):
        gray = gray_encode(i)
        dec = gray_decode(gray)
        print(f" {i:>2d}, {i:>05b} => {gray:>05b} => {dec:>2d}")