君子性非异也,善假于物也。

如有恒,何须三更起,半夜眠;最怕莫,三天打鱼两天晒网,竹篮打水一场空!
posts - 31, comments - 23, trackbacks - 0, articles - 30
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

BCD码

Posted on 2007-12-24 12:34 neter 阅读(458) 评论(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并不固定,可看情况而定,所要的就是用最少的位数表示尽可能多的数。

Feedback

# re: BCD码  回复  更多评论   

2008-10-22 20:34 by 520123123
晕 完全不懂 唉、、、

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理