格雷码与二进制代码的转换规则
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
格雷码与二进制代码的转换规则
一、什么是格雷码?
首先我们来了解一下格雷码。前面我们介绍了一些常见的BCD码,8421BCD、2421BCD、5421BCD,还有余三码,那么这个格雷码我们接触较少,什么是格雷码呢?这种码是一个叫弗兰克*格雷的人在1953年发明的,最初用于通信。
格雷码,又叫循环二进制码或反射二进制码,它的基本的特点就是任意两个相邻的代码只有一位二进制数不同,这点在下面会详细讲解到。在数字系统中,常要求代码按一定顺序变化。例如,按自然数递增计数,若采用8421码,则数0111变到1000时四位均要变化,而在实际电路中,4位的变化不可能绝对同时发生,则计数中可能出现短暂的其它代码(1100、1111等)。在特定情况下可能导致电路状态错误或输入错误。使用格雷码可以避免这种错误。格雷码属于可靠性编码,是一种错误最小化的编码方式。
举个例子来说吧,如果用一个8位的二进制数表示热水壶的温度,温度是不断连续变化的,36°C、37°C、38°C......,那么温度每升高一度,二进制数就加1。这时候,二进制数有可能是多个位同时变化的:当温度由119°C变成120°C时,二进制数由01110111变化成01111000,有四个位发生变化;当二进制数由177°C变化成178°C时,二进制数由01111111变化成10000000,有8个位发生了变化。也就是说,自然二进制数在表示一个连续变化的数值时,可能会有多个位同时发生变化,每个位翻转(变化)的频率是比较高的,这在某些应用场合,是十分不利的。而格雷码,由于具有循环特性和单步特性,当用它表示一个连续变化的数值时,仅有一个位会翻转,大大的降低了位翻转的频率,因而可以保证传输的稳定性,较少传输误码率。格雷码的单步特性呢就是是指,当格雷码表示的一个数值,连续变化时,格雷码只有一个位会变化。就是我刚才说的它最基本的特点了。还有格雷码的单步特性是指,当格雷码表示的一个数值,连续变化时,格雷码只有一个位会变化。看表,1000变到0000,格雷码只有一位翻转。
看,有了这个规则,格雷码就so easy了!
十进制数
自然二进制数
格雷码
十进制数
自然二进制数
格雷码
0
0000
0000
8
1000
1100
1
0001
0001
9
1001
1101
2
0010
0011
10
1010
1111
3
0011
0010
11
1011
1110
4
0100
0110
12
1100
1010
5
0101
0111
13
1101
1011
6
0110
0101
14
1110
最初就说了,格雷码的基本特点就是任意两个相邻的代码只有一位二进制数不同,这点很重要。现在,我们在来看二进制码转格雷码的另一种方法,这种方法用文字来表述就是:从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变(相当于左边是0)。举个例子吧:
二进制的0110
第一步、二进制最右边0和它左边的1异或,得到1,这就是格雷码的最右边的数;
第二步、二进制右边第二位的1与它左边的1异或,得到0,这就是格雷码右边的第二位数;
第三步、二进制右边第三位数1与它左边的0异或,得到1,这就是格雷码的右边第三位;
最后,保持最高位不变
就得到了格雷码0101,看,就这样简单。
再来看格雷码转换为二进制码,也就是解码的过程。解码是编码的逆过程,理解了编码,解码就好理解了。解码从左边第二位起,将每位与左边一位解码后的值异或,作为该位解码后的值(最左边一位依然不变),记住啊,最高位,也就是最左边的一位依然是不变的,和编码是一样的。我们来看看这个公式:
1001
7
0111
0100
15
Leabharlann Baidu1111
1000
二、格雷码与二进制码转换规则
大家看一下这个表,有没有发现二进制转为格雷码的规律?看上去,格雷码似乎很乱,不像8421码那样连续的。我们记8421码的时候很轻松,因为它每位的值都是固定的数,有位权。那么我们怎么记格雷码呢?死背真值表?当然了,这是一种方法,有能力又勤奋的同学可以用这种方法。不过呢,很多东西都是有它独特的规律的,格雷码也不例外。现在我们先来看二进制转换为格雷码的过程,也就是编码。
一、什么是格雷码?
首先我们来了解一下格雷码。前面我们介绍了一些常见的BCD码,8421BCD、2421BCD、5421BCD,还有余三码,那么这个格雷码我们接触较少,什么是格雷码呢?这种码是一个叫弗兰克*格雷的人在1953年发明的,最初用于通信。
格雷码,又叫循环二进制码或反射二进制码,它的基本的特点就是任意两个相邻的代码只有一位二进制数不同,这点在下面会详细讲解到。在数字系统中,常要求代码按一定顺序变化。例如,按自然数递增计数,若采用8421码,则数0111变到1000时四位均要变化,而在实际电路中,4位的变化不可能绝对同时发生,则计数中可能出现短暂的其它代码(1100、1111等)。在特定情况下可能导致电路状态错误或输入错误。使用格雷码可以避免这种错误。格雷码属于可靠性编码,是一种错误最小化的编码方式。
举个例子来说吧,如果用一个8位的二进制数表示热水壶的温度,温度是不断连续变化的,36°C、37°C、38°C......,那么温度每升高一度,二进制数就加1。这时候,二进制数有可能是多个位同时变化的:当温度由119°C变成120°C时,二进制数由01110111变化成01111000,有四个位发生变化;当二进制数由177°C变化成178°C时,二进制数由01111111变化成10000000,有8个位发生了变化。也就是说,自然二进制数在表示一个连续变化的数值时,可能会有多个位同时发生变化,每个位翻转(变化)的频率是比较高的,这在某些应用场合,是十分不利的。而格雷码,由于具有循环特性和单步特性,当用它表示一个连续变化的数值时,仅有一个位会翻转,大大的降低了位翻转的频率,因而可以保证传输的稳定性,较少传输误码率。格雷码的单步特性呢就是是指,当格雷码表示的一个数值,连续变化时,格雷码只有一个位会变化。就是我刚才说的它最基本的特点了。还有格雷码的单步特性是指,当格雷码表示的一个数值,连续变化时,格雷码只有一个位会变化。看表,1000变到0000,格雷码只有一位翻转。
看,有了这个规则,格雷码就so easy了!
十进制数
自然二进制数
格雷码
十进制数
自然二进制数
格雷码
0
0000
0000
8
1000
1100
1
0001
0001
9
1001
1101
2
0010
0011
10
1010
1111
3
0011
0010
11
1011
1110
4
0100
0110
12
1100
1010
5
0101
0111
13
1101
1011
6
0110
0101
14
1110
最初就说了,格雷码的基本特点就是任意两个相邻的代码只有一位二进制数不同,这点很重要。现在,我们在来看二进制码转格雷码的另一种方法,这种方法用文字来表述就是:从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变(相当于左边是0)。举个例子吧:
二进制的0110
第一步、二进制最右边0和它左边的1异或,得到1,这就是格雷码的最右边的数;
第二步、二进制右边第二位的1与它左边的1异或,得到0,这就是格雷码右边的第二位数;
第三步、二进制右边第三位数1与它左边的0异或,得到1,这就是格雷码的右边第三位;
最后,保持最高位不变
就得到了格雷码0101,看,就这样简单。
再来看格雷码转换为二进制码,也就是解码的过程。解码是编码的逆过程,理解了编码,解码就好理解了。解码从左边第二位起,将每位与左边一位解码后的值异或,作为该位解码后的值(最左边一位依然不变),记住啊,最高位,也就是最左边的一位依然是不变的,和编码是一样的。我们来看看这个公式:
1001
7
0111
0100
15
Leabharlann Baidu1111
1000
二、格雷码与二进制码转换规则
大家看一下这个表,有没有发现二进制转为格雷码的规律?看上去,格雷码似乎很乱,不像8421码那样连续的。我们记8421码的时候很轻松,因为它每位的值都是固定的数,有位权。那么我们怎么记格雷码呢?死背真值表?当然了,这是一种方法,有能力又勤奋的同学可以用这种方法。不过呢,很多东西都是有它独特的规律的,格雷码也不例外。现在我们先来看二进制转换为格雷码的过程,也就是编码。