weixin_42365424 2023-03-12 22:35 采纳率: 100%
浏览 49
已结题

压缩BCD 码转化为十进制数,编程求解

数值输入01 20 00 00,为压缩BCD 码,均为16进制,第一个字节的高位 0 为符号位(0 正,1 负)020 为三 位整数值,10 00 为四位小数值。解析为 +120.100同理10 05 25 00解析为-5.25;该怎么写代码啊,求解

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-03-14 02:08
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 建议你看下这篇博客👉 :什么是 BCD(二进制编码的十进制)
    • 除此之外, 这篇博客: 什么是 BCD(二进制编码的十进制)中的 如何转换为BCD 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      如何转换为BCD,相对简单。只要根据数值的大小加上6的倍数就可以了。检查运算结果,如果数量大于9,则加6。如果不到9,我什么都不会做。

       要在BCD中表示大于9的数字,需要二进制数的八位数,因此前四位数字将被添加。在大于9的数字上加上6,必定会在第四位数发生进位。这个进位叫半进位。在微型计算机内部执行BCD转换操作时,通过检查半进位来确定大于9的数。

      半进位是CCR(Condition Code Register:条件码寄存器)的H(半进位)。

      您可以通过将6添加到十进制的9到15,即十六进制的A到F,将其转换为BCD。此外,更大的数字转换方法如下表所示。这里显示的是十进制数的10到39(十六进制的A到27)。十进制数的10到19的情况下加6,20到29的情况下加12,30到39的情况下加18。这样,通过根据数量的大小加上6的倍数,就可以很容易地转换成BCD。

       例如,考虑一下微型计算机中内置的实时时钟(以下简称RTC:Real Time Clock)处理的数字。
      RTC是一种时间时钟定时器,可实现时钟和日历功能。计算分钟和秒的最大值为59。时间最大值为12或24。因此,您可以将转换为BCD的最大值限制为59或24。也就是说,即使用普通BCD表示2位数,也可以用6位或7位来表示,而不需要仅限于RTC的所有8位。此外,您还可以在1位和10位之间进行转换,从而优化硬件逻辑规模。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月22日
  • 已采纳回答 3月14日
  • 创建了问题 3月12日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?