数字逻辑(第3版)
上QQ阅读APP看书,第一时间看更新

1.5 数码和字符的编码

数字系统中的信息有两类:一类是数码信息,另一类是代码信息。数码信息的表示方法如前所述,以便在数字系统中进行运算、存储和传输。为了表示字符等一类被处理的信息,也需要用一定位数的二进制数码表示,这个特定的二进制码称为代码。注意,“代码”和“数码”的含义不尽相同,代码是不同信息的代号。

每个信息制定一个具体的码字去代表它,这一指定过程称为编码。由于指定的方法不是唯一的,因此一组信息存在着多种编码方案。

1.5.1 BCD编码

在数字系统中,各种数据要转换为二进制代码才能进行处理,而人们习惯于使用十进制数,所以在数字系统的输入、输出中仍采用十进制数,这样就产生了用4位二进制数表示1位十进制数的方法,这种用于表示十进制数的二进制代码称为二-十进制代码(Binary Coded Decimal),简称BCD码。它具有二进制数的形式以满足数字系统的要求,又具有十进制的特点(只有10种有效状态)。在某些情况下,计算机也可以对这种形式的数直接进行运算。常见的BCD码表示有8421码、2421码和余3码。

余3码是每个8421码加3。3种BCD码都是用4位二进制代码表示1位十进制数字,与十进制数之间的转换是以4位二进制对应1位十进制直接进行变换。一个n位十进制数对应的BCD码一定为4n位。

在BCD编码中,若4位二进制一组中的每位都有固定权值,则称为有权码(weighted code),如8421码、2421码是有权码,余3码是无权码。

当两个十进制数为互反,它们对应的二进制码互反,则称为自补码(self-complementing code)。2421码和余3码是自补码。

常用BCD码如表1-1所示。

表1-1 常用BCD码

8421码是一种使用最广的BCD码,是一种有权码,其各位的权分别是(从最有效高位开始到最低有效位)8、4、2、1。

例1-10】写出十进制数(1592)10对应的8421码和余3码。

:(1592)10=(0001 0101 1001 0010)8421

=(0100 1000 1100 0101)余3码

例1-11】写出8421码(1101001.01011)8421对应的十进制数。

:(1101001.01011)8421=(0110 1001 . 0101 1000)8421=(69.58)10

在使用8421BCD码时一定要注意其有效的编码仅10个,即:0000~1001。4位二进制数的其余6个编码1010、1011、1100、1101、1110、1111不是有效编码。在余3码中0000~0010,1101~1111这六个编码不是有效编码。在2421码中,0101~1010这6个编码仍表示有效的十进制数,只不过由于它们和已有的十进制数重复,所以不使用。

1.5.2 可靠性编码

1.格雷码

格雷码(Gray)的编码规则是任何相邻的两个码字中,仅有一位不同,其他位则相同,如表1-2所示。格雷码可以用在计数器中,当从某一编码变到下一个相邻编码时,只有一位的状态发生变化,这有利于提高系统的工作速度和可靠性。很显然,格雷码中的每一位都没有固定的权值,是无权码。

表1-2 四位二进制数与格雷码

将二进制转换到格雷码的方法为:保持最高位不变,其他位与前面一位异或。假设二进制数为Bn-1Bn-2…B0,格雷码为Gn-1Gn-2…G0,其公式为

Gn-1=Bn-1

Gi=Bi+1⊕Bii=n-2…0

⊕称为异或运算,两个数不同则结果为1。具体运算规则为0⊕0=0,0⊕1=1,1⊕0=1,1⊕1=0。

如:

2.奇偶校验码

奇偶校验码是为检查数据传输是否出错而设置的,在每组数据信息上附加一位奇偶校验位,若采用奇校验方式,则使包括校验码在内的数据含有奇数个“1”;而偶校验方式则使包括校验码在内的数据含有偶数个“1”。

例如,字母“B”的7位ASCII码为1000010,在最高位增加一位奇偶校验位。若采用其奇校验,则为11000010;若采用偶校验,则为01000010。

奇偶校验码可发现奇数个错误,但不能发现偶数个错误。当发现奇数个错误时,由于不知道是哪些位出错,所以奇偶校验码没有纠错能力。

奇偶校验码如表1-3所示。

表1-3 奇偶校验码

1.5.3 字符编码

最常用的字符代码是ASCII码,每个字符用7位二进制码表示,如表1-4所示。它是由128个字符组成的字符集,其中32个控制字符,然后是空格、数字、大写字母、小写字母。数字0~9的高3位是011,低4位是0000~1001,所以和二进制进行转换很容易。大小写字母之间进行转换也很容易,因为只是a5位的不同,例如,字符B的编码为1000010,而字符b的编码为1100010。

表1-4 7位ASCII码表

(续)