BCD码的表示方法(没有单独的表示方法,只是用二进制表示,和十六进制更不同(有时候为方便暂且用十六进制形势,绝对不能理解为十六进制中特殊的一些数(无10以上的字母表示)))

 

BCD码的表示方法

BCD码的表示方法(没有单独的表示方法,只是用二进制表示,和十六进制更不同(有时候为方便暂且用十六进制形势,绝对不能理解为十六进制中特殊的一些数(无10以上的字母表示)))

 

BCD是什么?

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

BCD有两种形式,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 0001

0001

0000 0001
20011 001000100000 0010
30011 001100110000 0011
40011 010001000000 0100
50011 010101010000 0101
60011 011001100000 0110
70011 011101110000 0111
80011 10001000

0000 1000

90011 10011001

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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值