十进制有权码
是指表示一个十进制数位的4位基2码的每一位有确定的位权。
用得最普遍的是8421码,即4个基2码位的权从高向低分别为8、4、2和1,使用基2码的0000、0001、…1001这10种组合,分别表示0到9这十个值。这种编码的优点是这4位基2码之间满足二进制的规则,而十进制数位之间则是十进制规则,故称这种编码为以二进制编码的十进制(Binary Coded Decimal)数,简称BCD码或二-十进制码。另一个优点是在数字符的ASCII码与这种编码之间的转换方便,即取每个数字符的ASCII码的低4位的值便直接得到该数字的BCD码,入/出操作简便。在计算机内实现BCD码之间的算术运算要复杂一些,在某些情况下,需要对加法运算的结果进行修正。修正规则是:
若两个8421码数相加之和等于或小于1001,即10进制的9,不需要修正;
若相加之和在10到15之间,一方面应向高位产生一进位,本位还要进行加6修正,进位是在进行加6修正时产生的;
若相加之和在16和18之间时,向高位的进位会在相加过程中自己产生,对本位还需进行加6修正。下面给出三种情况下的具体例子。
例如,1+8=9的运算结果是正确的,不必修正。
0 0 0 1
+)1 0 0 0 (1)10+(8)10=(9)10
1 0 0 1
而4+9的结果就必须用 +6 修正,进位是在修正过程中产生的。
0 1 0 0
+)1 0 0 1 (4)10+(9)10 =(1)10 (3)10
1 1 0 1
+) 0 1 1 0
1 0 0 1 1
而7+9的结果也必须用 +6 修正,进位是在相同加过程中产生的。
0 1 1 1
+)1 0 0 1 (7)10+(9)10 =(1)10(6)10
1 0 0 0 0
+) 0 1 1 0
1 0 1 1 0
另外几种有权码,如2421、5211、84-2-1、4311码(表2.9),也都是用4位有权基2码表示一个十进制数位,但这4位基2码之间并不符合二进制规则。这几种有权码的特性表现为:
当采用2421、5211和4311编码时,任何两个十进制数位相加产生10或大于10的结果,相应的基2码相加会向高一位产生进位,有利于实现逢十进位的计数和加法规则。
任何两个相加之和等于9的十进制数位的基2码,互为反码,即满足十进制数按9互补(9's Complement)的关系,有利于简化减法处理。表2.9给出的是上面提到的十进制数位的编码方案。
表2.9 四位有权码
十进制数 | 8421码 | 2421码 | 5211码 | 840201码 | 4311码 |