zoukankan      html  css  js  c++  java
  • 二进制码转BCD码原理

    有时候没有采用BCD计数器,又需要用十进制形式显示二进制数据,最常用的方法是编码转换:将二进制码转换成BCD码(8421)。

    8421码:8421码又称十进制码,它只选用了四位二进制码中前10组代码,4个码表达10个数,即用0000~1001分别代表它所对应的十进制数,余下的六组代码不用。

    如果要我将二进制码转成BCD码,我会看看他们何时分道扬镳,以此观察二者的区别。

    对于BCD计数器,当计数到1001时,下一次计数要进位,得到0001_0000。对于二进制计数器,下一次计数得到的是1010。

    不可能重新计一次数来得到BCD码,太浪费时间了,但是直接让我转我也束手无策。我们很快发现按位重建的话,消耗的时钟周期数是二进制位数,还可以接受。深入思考一下,发现是可行的。就像标准LSB乘法一样,从二进制高位开始重建,用一个寄存器每个周期进行shift-add操作。如果不干其他的,花费n个周期即可重建出n-bit二进制数。这个工作量已经是一个比特串行乘法器了,结果肯定是原来的二进制数不会错。每4个bit分为一组BCD码,对于任意一组在任意一个周期状态下,只要数据≥5,那么下一次移位就会超出BCD码范围,对于BCD计数器来说需要进位。为使4位二进制码进位,要满足逢16进一。由于BCD码是逢10进一,直接给当前组4bit数据补上差距3即可。下一次移位的时候,差距扩大为6,如果BCD码应该进位,那么二进制码也会进位,同步进位,目的达成。

    寄存器中的编码已经是BCD码了,但是这个BCD码代表的值和二进制代表的值是一样的。二进制重建可以进行shift-add操作,BCD码重建同样可以进行shift-add操作,只不过BCD码有自己的规则,在shift-add的时候要进行一点修正罢了。在任意周期,重建出来的二进制码和BCD码表示的值都是一样的。所以最终重建出来的BCD码是正确的。

    示例:1011
    重建到101时,+3,变为1000。继续重建,得到10001,可知1011对应十进制数位11。
    8位示例请看这篇帖子:https://blog.csdn.net/li200503028/article/details/19507061

  • 相关阅读:
    在Tomcat运行JSP的一个问题
    英语时态的性趣学法
    温哥华蝉联全球最宜居城市榜首 Vancouver still world's most liveable city: survey
    【转】解压缩版tomcat配置及使用(环境变量设置及测试,一个简单的web应用实例)
    五个常用MySQL图形化管理工具
    windows下将解压缩版的tomcat设置为自动运行的系统服务
    Java初学者Java的学习路径(全集)
    [ZT]森田学习体会
    7种错误冲奶粉法 宝宝的健康会打折
    数据库系统原理
  • 原文地址:https://www.cnblogs.com/feicaixian/p/12855400.html
Copyright © 2011-2022 走看看