Posted on 2007-12-24 12:34
neter 阅读(634)
评论(1) 编辑 收藏 引用 所属分类:
程序设计
即BCD代码。Binary-Coded Decimal,简称BCD,称BCD码或二-十进制代码,亦称二进码十进数。是一种
二进制的数字编码形式,用二进制编码的
十进制代码。这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧,最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免却使电脑作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。
由于十进制数共有0、1、2、……、9十个数码,因此,至少需要4位二进制码来表示1位十进制数。4位二进制码共有2^4=16种码组,在这16种代码中,可以任选10种来表示10个十进制数码,共有N=16!/(16-10)!约等于2.9乘以10的10次方种方案。常用的BCD代码列于末。
常用BCD编码方式最常用的BCD编码,就是使用"0"至"9"这十个数值的二进码来表示。这种编码方式,在中国大陆称之为“8421码”。除此以外,对应不同需求,各人亦开发了不同的编码方法,以适应不同的需求。这些编码,大致可以分成有权码和无权码两种:
有权BCD码,如:8421(最常用)、2421、5421…
无权BCD码,如:余3码、格雷码…
常用
BCD编码表
|
8421码
|
5421码
|
2421码
|
5211码
|
余3码
|
0
|
0000
|
0000
|
0000
|
0000
|
0000
|
1
|
0001
|
0001
|
0001
|
0001
|
0100
|
2
|
0010
|
0010
|
0010
|
0100
|
0101
|
3
|
0011
|
0011
|
0011
|
0101
|
0110
|
4
|
0100
|
0100
|
0100
|
0111
|
0111
|
5
|
0101
|
1000
|
0101
|
1000
|
1000
|
6
|
0110
|
1001
|
0110
|
1001
|
1001
|
7
|
0111
|
1010
|
0111
|
1100
|
1010
|
8
|
1000
|
1011
|
1110
|
1101
|
1011
|
9
|
1001
|
1100
|
1111
|
1111
|
1100
|
权
|
8421
|
5421
|
2421
|
5211
|
|
|
非压缩式和压缩式BCD码
BCD又分为两种,非压缩式和压缩式两种。
前面这种81存成 “08,01” 是非压缩式,而压缩式会存成 “81h” (直接以十六进制储存)。非压缩的BCD码只有低四位有效,而压缩的BCD码则将高四位也用上了,就是说一个字节有两个BCD码。BCD是用0和1表示十进制,如0000表示0,0001表示1,0010表示2。而压缩的BCD是用00表示0,01表示1,10表示2,110表示3等。
例:
1234表示成非压缩的BCD码是00000001000000100000001100000100,也就是0x01020304;而压缩BCD码则表示成0001001000110100,也就是0x1234。
但压缩的BCD并不固定,可看情况而定,所要的就是用最少的位数表示尽可能多的数。