Chinaunix首页 | 论坛 | 博客
  • 博客访问: 208652
  • 博文数量: 31
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 275
  • 用 户 组: 普通用户
  • 注册时间: 2004-11-09 14:08
文章分类

全部博文(31)

文章存档

2009年(2)

2008年(1)

2006年(27)

2004年(1)

我的朋友

分类:

2006-04-03 11:28:39

BCD码的表示方法

BCD码的表示方法


BCD是什么?

用二进制数来表示十进制数的表示方法。

CD有两种形式,pack BCD, unpack BCD

1.pack BCD,压缩的BCD码

它是一种用四位二进制数表示十进制数. 首先是用四位二制数表示个数,然后用四位二进制数表示十位, 然后百位...。


比如:251需要三个四位二进制数表示。 1表示为0001;5表示为0101;2表示为0010.


最后251的BCD数据表示为0010 0101 0001.


2.unpack BCD.非压缩BCD


非压缩的BCD码用8位二进制数表示一个十进制数位,其中低4位是BCD码,高4位是0。


ASCII和BCD码对照表:




十进制数字 ASCII码 压缩BCD码 非压缩BCD码

0

0011 0000 0000 0000 0000
1 0011 0001

0001

0000 0001
2 0011 0010 0010 0000 0010
3 0011 0011 0011 0000 0011
4 0011 0100 0100 0000 0100
5 0011 0101 0101 0000 0101
6 0011 0110 0110 0000 0110
7 0011 0111 0111 0000 0111
8 0011 1000 1000

0000 1000

9 0011 1001 1001

0000 1001




来源:http://www.cublog.cn/opera/showart.php?blogid=15478&id=83640





BCD码:
  BCD(Binary Coded Decimal)是用二进制编码表示的十进制数(见表3.3),十进制数采用0~9十个数字,是人们最常用的。在计算机中,同一个数可以用两种BCD格式来表示:①压缩的BCD码 ②非压缩的BCD码

  压缩的BCD码:
  压缩的BCD码用4位二进制数表示一个十进制数位,整个十进制数用一串BCD码来表示。例如,十进制数59表示成压缩的BCD码为0101 1001,十进制数1946表示成压缩的BCD码为0001 1001 0100 0110。

  非压缩的BCD码:
  非压缩的BCD码用8位二进制数表示一个十进制数位,其中低4位是BCD码,高4位是0。例如,十进制数78表示成压缩的BCD码为0000 0111 0000 1000。

  从键盘输入数据时,计算机接收的是ASCII码,要将ASCII码表示的数转换成BCD码是很简单的,只要把ASCII码的高4位清零即可。

ASCII和BCD码
十进制数字 ASCII码 压缩BCD码 非压缩BCD码
0 0011 0000 0000 0000 0000
1 0011 0001 0001 0000 0001
2 0011 0010 0010 0000 0010
3 0011 0011 0011 0000 0011
4 0011 0100 0100 0000 0100
5 0011 0101 0101 0000 0101
6 0011 0110 0110 0000 0110
7 0011 0111 0111 0000 0111
8 0011 1000 1000 0000 1000
9 0011 1001 1001 0000 1001
void BcdToAscii (char *ascii_buf, const BYTE *bcd_buf, int len)
{
int i;
char ch;

for (i=0; i {
if (i & 1) ch = *(bcd_buf++) & 0x0f;
else ch = *bcd_buf >> 4;
ascii_buf[i] = ch + ((ch > 9)? 'A'-10 : '0');
}
}

 

来源:http://xxcom.blogchina.com/

阅读(4493) | 评论(11) | 转发(0) |
给主人留下些什么吧!~~