1.5 码制
在数字系统中,常用0和1的组合来表示不同的数字、符号、事物或状态,这个过程称之为编码。编码过程中所使用的0和1的各种组合就是代码,编制代码所遵循的规则就称为码制。此时的代码不用于表示数值大小,而用于代表不同的事物或事物的不同状态。
代码可分为数字型代码和字符型代码。数字型代码用来表示数字的大小,又分为有权码和无权码。字符型代码用来表示不同的符号、事物、动作或状态。下面将介绍几种常见的二进制代码。
1.5.1 BCD码
在日常生活中,人们最熟悉的数制是十进制数,计算机处理数据时采用的都是二进制数,因此对于非专业技术人员来说,了解二进制与十进制的关系存在困难。为了方便人们理解二进制码和十进制码的关系,人们提出了一种二进制代码的特殊形式——BCD码。
BCD码(Binary Coded Decimal)是一种用4位二进制数表示1位十进制数码的编码方式。BCD码共有4位二进制数,代表1位0~9的十进制数。由于4位二进制数码有16种组合,因此可从16种组合中选出10种组合作为BCD码。不同BCD码所对应的编码规则不同,如果某种BCD码的每一位都拥有固定的“权值”,则称这种BCD码为有权BCD码,否则称为无权BCD码。表1.5.1列出了常见的几种BCD码。
表1.5.1 几种常见的BCD代码
1.8421BCD码
8421BCD码是最基本和最常用的有权BCD码,从高位到低位的权值分别为8、4、2、1,因此属于有权码。将各二进制位与权值相乘,并将乘积相加就得到相应的十进制数。8421 BCD码从4位自然二进制码中选用了前10组代码,即用0000~1001分别代表它所对应的十进制数,而剩下的1010~1111这6组代码不属于8421BCD码。
2.5421BCD码
5421BCD码,从高位到低位的权值分别为5、4、2、1,属于有权BCD码。将各二进制位与权值相乘,并将乘积相加就得到相应的十进制数。5421BCD码的编码方案不是唯一的,表1.5.1中只列出了一种编码方案。
5421BCD码的显著特点是最高位连续5个0后连续5个1,因此当计数器采用这种编码方式时,最高位可产生对称方波输出。
3.2421BCD码
2421BCD码属于有权BCD码,从高位到低位的权值分别为2、4、2、1。将各二进制位与权值相乘,并将乘积相加就得到相应的十进制数。2421BCD码的编码方案也不是唯一的,表1.5.1中只列出了一种编码方案。
2421BCD码的10个数码中,0和9、1和8、2和7、3和6、4和5的代码互为反码,即2421 BCD码所表示的数,只要自身按位取反,就能得到另一个2421BCD码。
4.余3码
余3码是在8421BCD码的基础上,把每个数的代码加上0011(对应十进制数3)后得到的。余3码各位无固定的权值,因此属于无权码。
1.5.2 可靠性编码
代码在数字系统传输的过程中,由于信道畸变或者外界因素干扰可能导致代码传输出错。为了尽量减少发生错误的可能,或者使传输错误易于被发现,甚至查出错误的码位后能予以纠正,人们采用可靠性编码以提高系统的可靠性。下面介绍两种常用的可靠性编码。
1.格雷码
格雷码属于可靠性编码,是一种错误最小化的编码方式,典型的格雷码如表1.5.2所示。格雷码的特点是相邻的两个代码之间只有一位二进制位不同,因此它在任意两个相邻数之间转换时,只有一位产生变化,这样与其他编码同时改变两位或多位的情况相比,更为可靠,减少了出错的可能性。
表1.5.2 典型的格雷码
格雷码不仅在任意两个相邻的数之间转换时只有一个数位发生变化,而且在最大数与最小数之间也仅有一个数位不同,因此格雷码又称为循环码。
2.奇偶校验码
奇偶校验码是一种用来检验码元在传送过程中是否产生错误的代码,它由信息位和奇偶校验位两部分组成。信息位是一组位数不限的二进制代码,代表传送的信息;奇偶校验位仅有一位,用来检查所传输的码元是否出错,可放在信息位的前面,也可放在信息位的后面。
奇偶校验编码方式有奇校验和偶校验两种。奇校验是使信息位和校验位中“1”的个数共计为奇数个,如果接收端检测到接收数据中“1”的个数不是奇数个,则说明数据传输出错。偶校验是使信息位和校验位中“1”的个数共计为偶数个,如果接收端检测到接收数据中“1”的个数不是偶数个,则说明数据传输出错。表1.5.3给出了8421BCD奇偶校验码。
表1.5.3 8421BCD奇偶校验码
续表
奇偶校验码具有编码简单、容易实现的优点,得到了广泛的应用。但奇偶检验码检错能力有限,只能发现代码的奇数个数位出错,不能发现偶数个数位出错,并且奇偶校验码只有检错能力,而没有纠错能力。
1.5.3 字符代码
计算机处理的对象不但有数字,还有字母、符号等,这些处理对象统称为字符。字符在计算机中同样是以二进制代码形式存在的,因此需要二进制码与之相对应。通常,把用于表示各个数字、字母和符号的二进制代码称为字符代码。
字符代码总类较多,在计算机中广泛使用的是美国信息交换标准代码(American Standard Code for Information Interchange, ASCII)。标准ASCII码是一组7位二进制代码,共128个不同代码。表1.5.4给出了标准ASCII码的组合。
表1.5.4 ASCII码表
ASCII 码已成为微型计算机标准输入、输出编码,用于计算机与计算机、计算机与打印机、键盘和视频显示等外部设备之间传输字符数字信息,操作人员由计算机键盘输入的信息在计算机内部的存储也使用ASCII码。