正常的二进制数字编码方式有一种缺点:每当数字每加一,编码中可能有多个位数被改变。比如从 到 ,数字只增加了一,二进制编码却由 0001
变成了 0010
,改变了两位。
现在有一种奇迹编码,它摒弃了二进制编码的缺点。在这种编码方式下,任意两个相邻数字的编码中只有一位二进制数不同。
举例而言,在奇迹编码下, 位数字 的编码是 0000 0000 0000 0000 0000 0000 0000 0000
, 的编码为 0000 0000 0000 0000 0000 0000 0000 0001
, 的编码是 0000 0000 0000 0000 0000 0000 0000 0011
, 的编码是 0000 0000 0000 0000 0000 0000 0000 0010
。
给出一种生成奇迹编码的方式:
以二进制 值的奇迹码为第零项,第一步改变第零项中最右边的那一位,得到第一项;第二步改变第一项中右起第一个为 的位的左边那一位,得到第二项;之后反复进行第一步与第二步,即可得到任意项的奇迹编码。
现在给你一个十进制正整数,请你将它的二进制编码转换成对应的奇迹编码并且将得到的奇迹编码视为一个新数字的二进制编码,然后输出这个新数字。