十六进制转为BCD码好理解,有问题的是BCD码转为十六进制数;

Hex2Bcd:
0x3F的BCD码是多少?正确答案:99,或者0x63
0x3F=63,再加0x,->0x63, 再把0x63转为99(0x63=99)
1、如果要表示为十六进制,则转换为10进制数,前面加0x符号;(十六进制表示)

2、如果要表示为十进制,则先转换为10进制数,前面加0x符号,再把加上符号的
十六进制数转为十进制数;(十进制表示)

如果一个数为0x38,则BCD码为86

Bcd2Hex:(注:)
1、如果这个数是16进制表示的,把0x符号去掉,当成10进制数直接转换为16进制数即可;
(前提是这个16进制表示的数的任何一位不能大于9,也就是说不能出现A、B、C、D、E、F)
如:0x999,去掉0x,->999,再转为十六进制数为0x3E7
2、如果这个数是十进制表示的,先把这个数转换为16进制数,再把0x符号去掉,当成
十进制数,再转化为十六进制数即可;(注:这个数要在一定范围内,才行,如999转换为
十六进制为0x3E7,把0x去掉,3E7不在10进制表示范围内,)

上面说的是在一定范围内的数,对于不在一定范围内的数怎么转?刚开始还真不好理解,
是因为学校教给我们的数学规则限制了我们的思维,对于一个数3E7,当成10进制怎么理解?
还是按十进制来,个位、十位、百位...,只不过现在十位上的数是14,

BCD码999转换为十六进制是多少?正确答案:447,若者0x1BF,为什么?想不通...
转换过程:
999转为十六进制,->0x3E7,
3
3*10+E=44
(3*10+E)*10+7
=447
也就相当于0x3E7当成10进制理解,则是3*100+E*10+7,简单不?

注:一个十六进制数转为BCD码,但这个BCD码再转为十六进制数,不等于这个数;
如:如果一个数为0x999,Hex2Bcd(0x999)=0x2547(9543),Bcd2Hex(0x2547)=0x9F3(2547)

而一个BCD码的数可以转为十六进制数,这个十六进制数可以反转为BCD码,可能等于这个
数(这个数是十六进制表示,且每一位的数字在0~9之间);也可能不等于这个数;
如:Bcd2Hex(0x999)=0x3E7(999),Hex2Bcd(0x3E7)=2457(0x999)(等于)
   Bcd2Hex(0x9F3)=0x41D(1053),Hex2Bcd(0x41D)=0x1053(4179)
   Bcd2Hex(999)=0x1BF(447),Hex2Bcd(0x1BF)=0x447(1095)(不等于)

Bcd2Hex(0x447)=0x1BF(447),Hex2Bcd(0x1BF)=0x447(1095)(等于)

结论:16进制转BCD不可逆,BCD转16进制有可能可逆。

十六进制和BCD码的那些事(终结篇)相关推荐

  1. 计算机进制bcd啥意思,怎样理解二进制和十六进制及BCD码 | 北岛夜话

    所谓"数制",是指"数"的表示方法,即计数的方法.数制采用进位的方法,当数值增加到该位能表示的最大值时,会将位数增加一位(进位).按照进位的规则进行计数的数制, ...

  2. c++ 转bcd码_BCD码、十六进制与十进制互转

    在做嵌入式软件的设计中,经常会遇到十六进制.BCD码与十进制之间的转换,最近做M1卡的应用中,涉及了大量的十六进制.BCD码与十进制之间的转换.笔者通过对BCD码.十六进制 权的理解,轻松的实现了他们 ...

  3. c语言BCD转十六进制,十进制,十六进制,BCD码相互转换C程序word版本.doc

    本人用过的十六进制.BCD码之间的转换C程序,还有十进制的,可以参考使用, #include #include / // //功能:十进制转十六进制 // //输入:int dec?????????? ...

  4. BCD码以及各进制之间的相互转换

    目录 前言 一.BCD码 二.进制互转 1.任意进制转十进制:系数X基数 ^ 权值(累加) 2.任意进制转二进制 前言 主要学习什么是BCD码,以及二进制.八进制.十进制.十六进制之间的相互转换 一. ...

  5. 【C语言】BCD码、十进制互相转换

    目录 0. 前言: 1. BCD码 2. 算法原理 3. 进制转换 3.1 两位BCD码的转换: 3.2 其他进制转换 3.3 任意进制转二进制 参考资料: 0. 前言: 记录今天用15单片机写DS1 ...

  6. 十进制转BCD码的方法

    今天发现一个十进制转BCD码的好方法,赶紧记录一下以备后用 举例: 要把一个3位的十进制数635转成BCD码(H)表示: 635(D) / 100(D) = 6(D) 6 * 16 2 = 1536( ...

  7. BCD码与十六进制值转换

    BCD码中最常用的就是8421型BCD码数值, 仪器为例使用以下方法进行转换: 宏函数 // BCD 码 转 十进制 #define BCD_TO_DECIMAL(x) ((((x) & 0x ...

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

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

  9. 简述二进制码、十进制码、BCD码、十六进制码转换的算法

    进制转换 简述二进制码.十进制码.BCD码.十六进制码转换的算法 把四字节 BCD 码 5287 转换为十六进制码 14A7H 简述二进制码.十进制码.BCD码.十六进制码转换的算法 ①二进制转十进制 ...

最新文章

  1. SQLServer 事务复制中使用脚本添加某个对象的发布
  2. SAP Cloud for Customer前台发送到后台的HTTP请求,遇到错误该怎么分析
  3. 3-15 《元编程》第6章 3-16 hook method
  4. python io_NumPy IO
  5. python multiprocessing遇到Can’t pickle instancemethod问题
  6. 修改joomla!底部版权信息的方法
  7. A - ACM Computer Factory - poj 3436(最大流)
  8. Java 面向对象 --匿名内部类
  9. java源程序编译的结果_java源程序编译后
  10. TCP和UDP的区别
  11. python如何获取鼠标位置_python实时得到鼠标的位置
  12. 基于USB数据采集卡(DAQ)与IO模块的热电阻温度采集
  13. 怎样理解OOP?OOP又是什么?
  14. JAVA多线程基础篇 4、可见性、有序性与Volatile
  15. 关于CSDN博客广告过多的解决办法
  16. Windows 10 合并磁盘分区 (G and H)
  17. Python使用Treeview制作表格(二)
  18. Docker 入门教程-----supervisor(进程管家)配置与Docker使用
  19. css display flew 伸缩盒模型
  20. LeetCode 0592. 分数加减运算:手把手分步のC++讲解

热门文章

  1. 按数字递增批量重命名文件的批处理
  2. 【北京.5月28日】第六届 Mobile Dev Day – WP7优秀应用经验分享日
  3. MybatisPlus基本查询
  4. 华为研发投入全球第二!力压三星、苹果
  5. 【JAVA】代码重构技巧
  6. python自动换壁纸_Python爬取必应每日图片并实现Windows壁纸自动切换
  7. OSError: [Errno 22] Invalid argument: 'E:\\DESK\x08ank dataset\train_set.csv'
  8. 汇编语言——>>步进电机
  9. 完美解决微信浏览器内长按识别个人收款码的案例分享
  10. 大数据技术的回顾与展望 ——写在Hadoop十周年纪念