"""练习 18 进阶版:用 ord 转码,并用逐次右移的前缀异或解码格雷码。""" character = input() number = int(input()) if len(character) != 1 or not character.isascii(): raise ValueError("第一行必须输入一个 ASCII 字符") if number < 0: raise ValueError("第二行必须输入非负整数") gray_code = number ^ (number >> 1) binary_value = 0 remaining_bits = gray_code while remaining_bits: binary_value ^= remaining_bits remaining_bits >>= 1 print("ASCII:", ord(character)) print("gray:", gray_code) print("decoded:", binary_value)