生成n位格雷码

来源:互联网 发布:可靠韩国代购淘宝店铺 编辑:程序博客网 时间:2024/06/05 23:48

生成n位格雷码

在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。

虽然自然二进制码可以直接由数/模转换器转换成模拟信号,但在某些情况,例如从十进制的3转换为4时二进制码的每一位都要变,能使数字电路产生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它在相邻位间转换时,只有一位产生变化。

找规律

0,1

00,01,11,10

000,001,011,010,110,100,101,111

思路一:n+1位格雷码的集合 = n位格雷码集合(顺序)加前缀0 + n位格雷码集合(逆序)加前缀1

部分伪代码

a(n+1) 长度 = a(n) *2m= a(n).lengthfor(int i=0;i<m;i++){s[i]="0"+ temp[i];s[m-1-i]="1"+temp[m-1-i]}

每遍递归里 一次遍历就好

思路二:n+1位格雷码的集合 = n位标准码集合 和 n位标准码集合右移1位 做异或

0 0
原创粉丝点击