什么是BCD码?BCD码的用处。怎么把BCD码转换成二进制值?
2011-06-01 23:38
555 查看
含义:用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
也可以这样理解:就是将十进制的数以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
相关文章推荐
- C语言中的二进制、八进制、十进制、十六进制他们之间的转换方式什么怎样的?
- 读写二进制时,怎么将ASCII码大于等于128的char字符转换为16进制输出
- 二进制与十六进制怎么相互转换
- java文件怎么转换成class文件;class怎么转换成jar文件;jar文件怎么转换成二进制dex
- 在Unicode转换中,_T()与L到底怎么用,有什么区别
- 在Unicode转换中,_T()与L到底怎么用,有什么区别
- 在Unicode转换中,_T()与L到底怎么用,有什么区别
- JAVA二进制 十进制 八进制等是怎么转换的
- BCD码转换成二进制和ASCII码
- 在java中怎么把字节数组转换成二进制字符串
- 在C中几进制怎么转换。还有什么是补码
- 我是怎么招聘程序员的----多个维度剖析衡量程序员的标准,角色转换面试时应该去关注什么
- 你知道x86是什么字节序吗?还有怎么转换字节序吗?
- 利用进位表计算十进制到二进制的转换
- 安装的fedora live 19 怎么没有终端呢?系统工具里面什么也没有。
- (递归)十进制转换成二进制
- 当面试官问你用例设计时你会用什么方法,你怎么回答
- git diff 的使用说明,是干什么的,怎么用!
- 二进制与十进制的转换
- java里字节和字符分别是什么概念,怎么区别