BCD解密,以及讲解它的做题步骤 您所在的位置:网站首页 二进制数转bcd码怎么算 BCD解密,以及讲解它的做题步骤

BCD解密,以及讲解它的做题步骤

2023-12-19 13:14| 来源: 网络整理| 查看: 265

题目描述: BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。输入格式:输入在一行中给出一个[0, 153]范围内的正整数,保证能转换回有效的BCD数,也就是说这个整数转换成十六进制时不会出现A-F的数字。输出格式:输出对应的十进制数。输入样例:18。 输出样例:12。 然后开始讲解(只针对这道题进行讲解,不深入了解他们的一些含义) 要做这个题,首先我们要理解什么是bcd数。 你可以暂时的将他们理解为他们本身指的就是十进制数(也就是十进制的结果),例0x42=42,0x22=22,0x33=33…所以也就是说这道题目,给出的0x12结果就是12。 那么现在问题来了,小明将他们当成二进制转十进制转成了18。这里我们就要来了解一下是什么原因导致小明将它转成18的。 我们来看第1段话的描述在这里插入图片描述 从这段话中我们发现,原来BCD是以字节来表达两位10进制数的,每4个比特表示一位,也就是说两位数总共有8个比特。 所以这里我们要将12给分开,分成1和2。然后将它们放入8421中。得到了0001 0010这么一个数。 当然,如果这里你看的不是很明白的话,我再解释一下。 这里其实就是16进制转二进制。只不过这里转换只能是个位数转换。例如9可以转换成1001,8可以转换成1000。 而对于10位数以上的,那该怎么办?例如10我们应该怎么转换? 我们只需要将他们看成两个个位数就行了,也就是一个1和一个0,1的16进制转二进制是0001,0的16进制转二进制是0000,将它们放在一起就形成了00010000,同理其他的禁止也是如此转换。 所以问题上的0x12,就是将它拆开成个位数,1的16进制转二进制,我们得到0001,2的16进制转二进制0010,然后我们把它拼在一起得到00010010,发现没有,将这个二进制转成十进制的话,我们得到的就是18。 那么现在只有最后一个问题了,那就是怎么将这个错误的数给转回来。 很简单,我们只需要将这个10进制转换成16进制。 为什么呢?因为前面我们提到了bcd它本身的数指的就是十进制的结果。 10进制转16进制的过程如下 18÷16=1…2,最终结果就是12。 10进制转16进制就是用10进制的数去除以16,在我们只取整数的前提下,我们能得到一个整数,还有没有除完的余数。16进制就是整数加余的结果。 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有