首页 理论教育 常用编码的介绍与比较

常用编码的介绍与比较

时间:2023-06-24 理论教育 版权反馈
【摘要】:表4 - 2列出了常见的几种十进制代码,它们的编码规则各不相同。由于代码中从左到右每一位的1分别表示8、4、2、1,所以将这种代码称为8421码。8421码中每一位的权是固定不变的,它属于恒权代码。余3码的编码规则与8421码不同,如果把每一个余3码看作4位二进制数,则它的数值比它所表示的十进制数码多3,故将这种代码称为余3码。

常用编码的介绍与比较

1. 十进制代码

为了用二进制代码表示十进制数的0~9这10个状态,二进制代码至少应当有4位。4位二进制代码一共有16个(0000~1111),取其中哪10个以及如何与0~9相对应,有许多种方案。表4 - 2列出了常见的几种十进制代码,它们的编码规则各不相同。

表4-2 几种常见的十进制代码

续表

8421码又称BCD(BinaRy Coded Decimal)码,是十进制代码中最常用的一种。在这种编码方式中,每一位二值代码的1都代表一个固定数值,将每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。由于代码中从左到右每一位的1分别表示8、4、2、1,所以将这种代码称为8421码。每一位的1代表的十进制数称为这一位的权。8421码中每一位的权是固定不变的,它属于恒权代码。

余3码的编码规则与8421码不同,如果把每一个余3码看作4位二进制数,则它的数值比它所表示的十进制数码多3,故将这种代码称为余3码。如果将两个余3码相加,所得的和将比十进制数的和所对应的二进制数多6。因此,在用余3码作十进制加法运算时,若两数之和为10,正好等于二进制数的16,于是便从高位自动产生进位信号

此外,从表4 - 2还可以看出,0和9、1和8、2和7、3和6、4和5的余3码互为反码,这对于求取对10的补码是很方便的。余3码不是恒权代码。如果试图将每个代码视为二进制数,并使它等效的十进制数与所表示的代码相等,那么代码中每一位的1所代表的十进制数在各个代码中不能是固定的。

2421码是一种恒权代码,它的0和9、1和8、2和7、3和6、4和5也互为反码,这个特点和余3码相似。

余3循环码是一种变权码,每一位的1在不同代码中并不代表固定的数值。它的主要特点是相邻的两个代码之间仅有一位的状态不同。

2. 格雷码

格雷码(Gray Code)又称循环码。从表4 - 3所示的4位格雷码编码中可以看出格雷码的构成方法,即每一位的状态变化都按一定的顺序循环。如果从0000开始,最右边一位的状态按0110的顺序循环变化,右边第二位的状态按00111100的顺序循环变化,右边第三位按0000111111110000的顺序循环变化。可见,自右向左,每一位状态循环中连续的0、1数目增加一倍。由于4位格雷码只有16个,所以最左边一位的状态只有半个循环,即0000000011111111。按照上述原则,很容易得到更多位数的格雷码。

与普通的二进制代码相比,格雷码的最大优点就在于当它按照表4 - 3所示的编码顺序依次变化时,相邻两个代码之间只有一位发生变化。这样在代码转换的过程中就不会产生过渡噪声。而在普通二进制代码的转换过程中,则有时会产生过渡噪声。例如,第四行的二进制代码0011转换为第五行的0100的过程中,如果最右边一位的变化比其他两位的变化慢,就会在一个极短的瞬间出现0101状态,这个状态将成为转换过程中出现的噪声。而在第四行的格雷码0010向第五行的0110转换的过程中则不会出现过渡噪声。这种过渡噪声在有些情况下甚至会影响电路的正常工作,这时必须采取措施加以避免。

表4-3 4位格雷码与二进制代码的比较

(www.xing528.com)

十进制代码中的余3循环码就是取4位格雷码中的10个代码组成的,它仍然具有格雷码的优点,即两个相邻代码之间仅有一位不同。

3. 奇偶校验码(检错码)

奇偶校验位给出一个数中1的个数是奇数还是偶数。许多系统都使用一个奇偶校验位,作为位错误检测的手段。任意的多位数组都包含奇数个1或偶数个1。将一个奇偶校验位附加到多位数组中,使得该组数中1的个数总是偶数或者总是奇数。一个偶校验位使1的总数为偶数,而奇校验位使1的总数为奇数。

一个给定的系统运行于偶校验或者奇校验,而不是同时运行于两者。例如,如果某系统运行于偶校验,则对于所接收的每一个多位数组都做一个检查,以确保这个多位数组中1的总数是偶数。如果有奇数个1,就有一个错误发生。

作为对奇偶校验位怎样附加到编码中的一个说明,表4 - 4列出了每个BCD码的偶校验和奇校验的奇偶校验位。每个BCD码的校验位处于P列。

表4-4 带奇偶校验位的BCD码

续表

奇偶校验位可以附加到码的开头或者结尾,这取决于系统的设计。注意,1的总数,包括奇偶校位上的1,对于偶校验总是偶数,对于奇校验总是奇数。

检测一个错误:奇偶校验位提供了单个位错误的检测(或者任何奇数个错误,这种可能性较小),但是不能检测一组数中的两个错误。例如,假设希望传送BCD码0101(奇校验可以应用于任何位数的码;使用4位作为说明)。所传送的总的码,包括偶校验位如下所示:

现在,假设从左边数第3位发生了错误(1变为0),如下所示:

当该码被接收时,奇偶校验检测电路检测出只有一个1(奇数),但是应当有偶数个1。因为在码被接收时,偶数个1没有出现在码中,所以就指出了一个错误。

奇偶校验码是以牺牲信息传输能力来获得检错性能的。校验位越多,传输能力越差。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈