1. 4. 1 十进制数的二进制编码
十进制数的二进制编码简称为二-十进制码或BCD码,所谓BCD码是指用若干位二进制数来表示一位十进制数。
十进制数有0~9共10个数码,所以表示1位十进制数,至少需要4位二进制数。但4位二进制数可以产生24= 16种组合,用4位二进制数表示1位十进制数,有六种组合是多余的。十进制数的二进制编码可以有许多种方法,即有许多种不同的编码方案。表1.4.1列举了目前常用的几种编码方案。
表1.5.1常用的几种BCD代码 |
||||
十进制编码 |
8421码 |
余3码 |
2421码 |
余3循环码 |
0 1 2 3 4 5 6 7 8 9 |
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 |
0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 |
0000 0001 0010 0011 0100 1011 1100 1101 1110 1111 |
0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 |
下面分别介绍几种常用编码。
一、8421BCD码
8421BCD码是最基本最常用的一种编码方案。在这种编码方式中每一位二进制代码都代表一个固定的数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。由于代码中从左到右每一位的1分别表示8、4、2、1,所以把这种代码叫做8421码。在8421码中每一位1代表的十进制数称为这一位的权。由于8421码中的每一位的权是固定不变的,它属于恒权代码。恒权码的按权展开式如下:
S= a3W3+a2W2+a1W1+a0W0 (1.5.1)
式中,a3,a2,a1,a0为各位的代码,W3,W2,Wl,W0为各位的权值。
8421BCD码的权为
W3= 23 = 8 W2 = 22 = 4 W1 = 21 = 2 W0 = 20 = 1
例如,8421BCD码1001的按权展开式为
1·8+0·4+0·2+1·1= 9
因而,代码1001表示十进制数9。
8421BCD码对于十进制的10个数码的表示与普通二进制中的表示形式完全一样,很容易实现彼此之间的转换。而且这种编码具有奇偶特性,当十进制数为奇数值时,其所对应的二进制码的最低位为1,当十进制数为偶数值时,其所对应的二进制代码的最低位为0,因此,采用8421BCD码很容易判别其奇偶。
需要注意的是:在8421BCD码中,不允许出现1010~1111这几个代码,因为在十进制中,没有数码同它们对应。
二、余3码
余3码是一种特殊的8421码,它是由8421BCD码加3后形成的,所以叫做余3码。例如,十进制数7在8421BCD码中是0111,在余3码中就成为1010。余3码的各位无固定的权。
余3码是一种“对9的自补”代码。它的0和9、1和8、2和7、3和6、4和5互为反码,即对应码位中,当其中一个为0时,另一个就为1。用余3码能很方便地求得某数“对9的补数”,即把该数的余3码自身按位取反,就得到该数“对9的补数”的余3码。例如十进制数4的余3码代码为0111,其”对9的补数”是5,则5的余3码代码为1000。
当两个余3码表示的数相加时,由于每个余3码都余3,其和就余6。因此,若在用余3码做十进制加法时,若两数之和为10,正好等于二进制数的16,于是便向高位自动产生进位信号。例如十进制数4和6的余3码分别是0111和1001,当两数相加时,
即向高位产生进位信号。
三、2421码
2421码也是一种恒权码,它的0和9、1和8、2和7、3和6、4和5互为反码,这一点和余3码相似。只要将2421码自身按位求反,就能方便地得到其“对9的补数”的2421码。2421码用4位二进制数表示1位十进制数,其权为
W3 = 2 W2 = 4 W1 = 2 W0 = 1
例如,2421码的0100,其按权展开式为
0·2+1·4+0·2+0·1= 4
因而,代码0100表示十进制数4。而其“对9的补数”是5,根据反码的定义,其代码为1011。
2421码的这一特性在计算机中对十进制数进行运算时很有用处。
四、余3循环码
余3循环码是一种变权码,每一位的1在不同代码中并不代表固定的数值。它的主要特点是相应的两个代码之间仅有一位的状态不同。因此,按余3循环码连接计数器时,每次状态翻转过程中只有一个触发器翻转,因此译码时不会引发竞争—冒险现象。
1. 4. 2 可靠性编码
在数字通信中,代码在形成和传送过程中,都可能发生错误,例如1001变成了1000;也会因处理该代码的逻辑电路有故障而出现了错误的结果,例如正确的结果是1110,但由于电路故障而输出的是1100。如果出现了与原始信息不同的代码称其为误码。为了使代码在形成和传送中不易出错,或者出现了误码时便于发现,甚至能查出错误的位置,因此产生了一种可靠性编码的方法。
一、格雷码 (Gray )
格雷码又叫循环码,它有多种编码形式,但它们有一个共同的特点,就是任意两个相邻的代码之间,它们的格雷码仅有一位不同,其余各位均相同。表1.4.2列出了一种格雷码。
表1.4.2 十进制数码的格雷码 |
|
十进制数码 |
0 1 2 3 4 5 6 7 8 9 |
格雷码 |
0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 |
在数字系统中,经常要求代码按一定顺序变化,例如按自然规律计数。如果两个相邻的十进制数5和6,它们的二进制代码分别为0101和0110,则当用二进制进行加法计数时,十进制数从5变到6,其相应的二进制代码从0101变到0110,二进制代码0101的最低两位都要改变。若两位的变化不是同时发生的 (在实际电路中,没有绝对的同时改变 ),那么,在计数过程中就可能短暂地出现其它代码 (0111或0100 ),尽管这种误码出现时间是短暂的,但在高速运算时却是不允许的,因为这可能导致电路状态错误或输出错误,而采用格雷码就可避免这种错误。
格雷码是一种无权码,它与二进制数之间的转换关系如下:
设二进剀数为B=BnBn-1…B1B0,其对应的格雷码为G=GnG n-1…G1G0,则
Gn=Bn
Gi=Bi+1⊕Bi i = 0,1,2,…,n-1
其中,⊕是异或逻辑运算。如果参与异或运算的两个变量的逻辑值不同,则其运算的结果为1。
例1.5.1把二进制数0101和1001转换成格雷码。
解:
如果已知格雷码,也可将其转换成对应的二进制数,其转换关系如下:
Bn = Gn
Bi=Bi+1⊕Gi i = 0,1,2,…,n-1
例1.5.2把格雷码1100和0111转换成二进制数。
解:
二、奇偶校验码
奇偶校验码是一种能检验出二进制信息在传送过程中出现错误的代码。这种代码由两部分组成:一部分是奇偶校验位,它使整个代码中1的个数按预先的规定成为奇数或偶数,另一部分是信息位,它需要传送的信息本身。当信息位和校验位中1的总个数为奇数时,称为奇校验,而1的总个数为偶数时,称为偶校验。表1.4.3表示由1位奇偶校验位(首位)及4位信息位构成的5位奇偶校验码。
表1.4.3十进制数码的奇偶校验码 |
|||
十进制数码 |
信息码 |
奇校验码 |
偶校验码 |
0 1 2 3 4 5 6 7 8 9 |
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 |
10000 00001 00010 10011 00100 10101 10110 00111 01000 11001 |
00000 10001 10010 00011 10100 00101 00110 10111 11000 01001 |
这种编码的特点是:使每—个代码中含有1的个数总是奇 (偶) 数个。这样,一旦某一代码在传送过程中出现了误码使1的个数不是奇 (偶) 数个时,就会被发现。
1. 4. 3 字符代码
计算机处理的数据不仅有数码,还有字母、标点符号,运算符号及其它特殊符号。这些符号都必须用二进制代码来表示, 计算机才能直接处理。通常,把用于表示各种字符的二进制代码称为字符代码。
目前,国际上采用的ASCII码 (美国标准信息交换码) 是一种常用的字符代码,使用时加第8位作奇偶校验位。
部分字符的ASCII码如表1.4.4所示。
表1.4.4 部分ASCII码 |
||||
字 符 |
ASCII码 |
|
字 符 |
ASCII码 |
空 格 · ( + $ * ) -- / , ˊ = 0 1 2 3 4 5 6 7 8 9
|
P010 0000 P010 1110 P010 1000 P010 1011 P010 0100 P010 1010 P010 1001 P010 1101 P010 1111 P010 1100 P010 0111 P011 1101 P011 0000 P011 0001 P011 0010 P011 0011 P011 0100 P011 0101 P011 0110 P011 0111 P011 1000 P011 1001
|
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z |
P100 0001 P100 0010 P100 0011 P100 0100 P100 0101 P100 0110 P100 0111 P100 1000 P100 1001 P100 1010 P100 1011 P100 1100 P100 110l P100 1110 P100 1111 P101 0000 P101 0001 P101 0010 P101 0011 P101 0100 P101 0101 P101 0110 P101 0111 P101 1000 P101 1001 P101 1010 |
注:P是奇偶校验位。