含义:用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

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

  1. bcd转ascii码 流程图_BCD码转换成ASCII值

    展开全部 BCD码转ASCII码 BCD码表示:对于用BCD码怎么表示十进制数32313133353236313431303231363533e4b893e5b19e3133343135663429上 ...

  2. 格雷码转换成二进制c语言程序,格雷码与二进制的转换程序

    /* 格雷码与二进制的转换程序 * 本程序采用递推的方法进行推导,可以转换0~2147483647之间的数(1~31位) * 推导方式如下(以三位格雷码为例): * 序号 格雷码 格雷码实值 二进制码 ...

  3. bcd转ascii码 流程图_BCD码转换成二进制和ASCII码

    首先得知道什么是BCD码,可以看下百度,基本定义已经讲清楚了,百度链接:BCD码--百度百科:这里要说的也是最常用的一种BCD码:8421码.本文规定若没有特殊说明时,各个数值只会是十进制数.二进制数 ...

  4. 转换8421码的程序c语言,16进制数转换成8421BCD编码函数

    .INCLUDE hardware.inc .IRAM _Led_Out: .dw 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 _L ...

  5. C语言十进制转换成二进制源码

    把开发过程比较重要的一些内容备份一次,下边资料是关于C语言十进制转换成二进制的内容,应该对各位朋友有一些用. #include int main() { int num; std::cout < ...

  6. html在线ocr文字识别源码,如何用OCR文字识别软件把图像转换成HTML

    之前给大家介绍了使用PDF转换成HTML文档首选ABBYY Mac),其实ABBYY FineReader无论Mac版还是Windows版都可以实现这一点,除此之外还可以将图像文件转换成HTML文档, ...

  7. c语言实现补码(负数)转换成原码

    1.基础知识 (1)负数在计算机中是以补码的形式存储的: (2)有符号数的最高位为1表示为负数,为0表示正数: (3)反码:等于原码除过符号位,其余位取反: (4)补码:等于反码加1. 2.以-62为 ...

  8. 原码的定义公式怎么理解_原码、反码、补码

    一. 机器数和机器数的真值 在学习原码,反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,叫做这个数的机器数.机器数是带符号的,在计算机用机器数的最高位存 ...

  9. 51单片机二进制转bcd码c语言,16位二进制数转换成BCD码的的快速算法-51单片机...

    在做而论道上篇博文中,回答了一个16位二进制数转换成BCD码的问题,给出了一个网上广泛流传的经典转换程序. . 说它经典,不仅是因为它已经流传已久,重要的是它的编程思路十分清晰,十分易于延伸推广.做而 ...

最新文章

  1. 《WeCity未来城市2.0白皮书》全文发布
  2. linux有符号和无符号,有符号数和无符号数
  3. 解决Outlook带有附件的邮件重复发送的问题
  4. python读取视频分辨率_Python实现以不同分辨率分类视频
  5. js倒计时天时分秒php,JS制作分秒倒计时器
  6. AbstractQueuedSynchronizer理解之三(Semaphore)
  7. ubuntu动态截图(GIF动画)
  8. 苹果Mac重复文件清理工具:​​​​Tidy Up
  9. Johnson 算法
  10. DNS与NS、NS记录
  11. 文本分类——怎么将二分类模型应用到多分类问题?
  12. SPI驱动之南瑞NRSEC3000加密芯片驱动开发总结
  13. 使用Intellij来实践测试驱动开发 TDD Kata
  14. 视频会议室装修部署指南
  15. Uva 1151 Buy or Build 二进制枚举+最小生成树
  16. 计算机底层:海明校验码。
  17. 在腾讯,我们如何做 Code Review
  18. IEEE 754浮点数标准详解
  19. 【改进模糊神经网络】基于粒子群-万有引力算法PSOGSA 改进的前馈神经网络研究(Matlab代码实现)
  20. [第六章 CTF之PWN章]n1ker

热门文章

  1. 知+是什么,知乎知+怎么开通?
  2. 那些前端的特效(装哈哈神器)
  3. java四个数打擂,荐 C/C++/Java/Go/Rust,Python喊你来打擂:3秒钟内统计出小于1亿的素数个数...
  4. 我的职业梦计算机软件,我的职业梦作文500字
  5. 渗透测试-2022红队必备工具列表总结​
  6. arXiv每日推荐-5.5:语音/音频每日论文速递
  7. 最新的Android版本是什么?
  8. ext winds点击超连接_东南大学崔铁军院士团队在信息超材料领域取得新进展
  9. 英国政府计划到2050年交通运输将脱碳
  10. web页面开发,一个前端妹子的面试笔记,知乎上已获万赞