5050|0

161

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

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 000000000000 0000
10011 00010001
0000 0001
20011 001000100000 0010
30011 001100110000 0011
40011 010001000000 0100
50011 010101010000 0101
60011 011001100000 0110
70011 011101110000 0111
80011 100010000000 1000
90011 100110010000 1001











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 = ch + ((ch > 9)? 'A'-10 : '0');
}
}
此帖出自单片机论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表