您当前的位置:五五电子网电子知识电工技术电工基础bcd码转二进制程序 正文
bcd码转二进制程序

bcd码转二进制程序

点击数:7559 次   录入时间:03-04 12:03:21   整理:http://www.55dianzi.com   电工基础

含义:用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
 *  DeSCRJPTion     : 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] [2]  下一页


本文关键字:程序  二进制  电工基础电工技术 - 电工基础