什么是BCD码?BCD码的用处。怎么把BCD码转换成二进制值?

含义:用4位二进制数来表示数值中的1位(十进制数中的0~9这10个数字),简称BCD码,即BCD代码

也可以这样理解:就是将十进制的数以8421的形式展开成二进制(14 以8421形式展现成二进制就是00010100 十进制表示就是20)

14的BCD码为20.

函数的作用就是把20变成14. 怎么把20变成14呢?从定义出发, 每一位用4位二进制表示.那就把BYTE的前4位*10,加上后四位即可。通过现象看本质。就这句话。

 

bcd码是四位二进制码, 也就是将十进制的数字转化为二进制, 但是和普通的转化有一点不同, 每一个十进制的数字0-9都对应着一个四位的二进制码,对应关系如下: 十进制0 对应 二进制0000 ;十进制1 对应二进制0001 ....... 9 1001 接下来的10就有两个上述的码来表示 10 表示为00010000 也就是BCD码是遇见1001就产生进位,不象普通的二进制码,到1111才产生进位10000

/******************************************************************************
 *  Function        : bcd2val
 *  Description     : Convert one BYTE packed BCD to binary value.
 *  Input           : bcd;    // one BYTE packed BCD.
 *  Return          : binary value.
 *  Note            : N/A
 *  Globals Changed : N/A
 ******************************************************************************
 */
DWORD bcd2val(BYTE bcd)
{
  return ((bcd>>4)*10 + (bcd & 0x0f));
} /* bcd2val */

 

bcd2val(20)=

(1)、 00010100>>4=00000001

(2)、 1*10=10

(3)、 bcd&0x0f=00000100

(4)、10+4=14 十六进制表示为e

 

把word型的数据(BCD)也转换成二进制值。

DWORD bcd2bin(WORD bcdval)
{
  return(bcd2val((BYTE)(bcdval/256))*100 + bcd2val((BYTE)(bcdval%256)));
}

 除以256相当于右移动8位,即把前一个字节转成二进制值,+后一个字节的BCD码值转换成二进制值。

 

BCD转成 二进制值输出 这个函数写的好像有问题。
DWORD bcd2val(BYTE bcd)
{
 return ((bcd>>4)*10 + (bcd & 0x0f));
 

 

如果用BCD码 20 赋值进去好像,没问题。算出来的值为 14
如果用241去计算的话。算出来值是 151也是完全正确的。 eg:

1、241的BCD码 的十进制值 为151 .

2、256的BCD码 十进制值是100 二进制为0X64


2011-06-01 wcg

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值