BCD码使用4位二进制数来表示十进制中0~9这10个数的数码。例如,十进制的237,其BCD码就是 0010_0011_0111 ,但是其二进制是 1110_1101 。
我们先来研究两个4位的BCD码相加的情况。设这两个BCD码对应的十进制是a,b,其中a,b∈{0,1,2,...,9}。此时只有3种情况:
也就是说:
第一种情况显然不需要再修正。
第二种情况,例如,5+8=13,我们希望得到BCD码是 0001_0011 ,但是运算结果 1101 ,因此如果我们加上了6,就可以得到正确结果: 1101 + 0110 = 0001_0011 。这是因为,十进制是逢十进一,但是4位BCD加法,在看作是二进制数做加法时,是逢十六进一。因此,如果结果是10≤a+b≤15,加上6以后就是16+0≤a+b+6≤16+5,此时因为逢十六进一的原因,就得到了结果 1_0≤[a+b+6]≤1_5 ,这个结果就是对的。
第三种情况,因为16≤a+b≤18,逢十六进一后,我们得到了 1_0≤[a+b]≤1_2 ,为了使结果正确,如果我们加上一个修正值6,就得到 1_6≤[a+b+6]≤1_8 ,从而结果也变得正确。
综上所述,如果两个BCD码相加:
考虑一个例子,比如 35+99=134。35和99的BCD码分别是 0011_0101 和 1001_1001 。先计算低4位: 0101 + 1001 = 1110 ,因为这个值大于9,因此加上6作为修正: 1110 + 0110 = 1_0100 。现在计算高四位,同时注意到还有一个进位: 0011 + 1001 + 0001 = 1101 ,这个值还是大于9,加上6,得到 1101 + 0110 = 1_0011 。因此最终结果是 1_0011_0100 ,这刚好就是134的BCD码。
我们之所以能够安全地加上进位,是因为BCD加法比照的就是十进制的加法,只不过前者是4位为一个单位,而后者是以1位数字作为一个单位。加上修正值后,BCD加法的进位就相当于十进制加法的进位。图示如下:
给定一个二进制数,要转BCD码。一个常用算法就是不断将该数除以10,以此依次分解出个位、十位、百位……上的数字,这些数字的4位二进制数就是对应的BCD。但是这样的算法需要不断做除法操作十分的麻烦。我们可以使用名为 加三左移法 来完成。
这个算法基于以下的事实:
一个n位二进制数 ,其展开是 如果使用秦九韶算法的嵌套形式写法,可以写成: 或者若令 则 如果使用这种形式,我们先计算的是 ,然后是 ,然后是 ,……,最后是 。
注意到 就是把 左移1位,这样就会在最右边空出一个位,之后再加 就是用 填充这个最低位,从而我们得到了 。不断左移,最终就能得到 ,现在我们来设计一个算法使得左移结束后能得到对应的BCD码。
设 是一个无限长的、初始状态为所有位都是0的理想寄存器, 是欲转换的数。我们使用下面的 归纳法 来构造证明我们通过不断左移最终能够得到存储在 中的 对应的BCD码:
由数学归纳原理,移动 len(h) 次后,我们最终可以得到 的BCD码。
作为一个例子,考虑使用该算法将 的二进制 1000_0110 转为BCD码:
现在, 已经全部移入,此时 的值就是 0001_0011_0100 ,它就是 的BCD码。
C语言的算法如下:
十进制数换算成8421BCD码的方法如下:
1、十进制换算BCD码,整数从右边开始,每个数是4位二进制代码。比如:(195)10=(1 1001 0101)BCD,小数和其他进制转换不一样,是数位换算:(0.28)10=(0.0010 1000)BCD。
BCD码换算成十进制数的方法如下:
1、BCD码与十进制数的转换关系很直观,相互转换也很简单,将十进制数75.4转换为BCD码:7-0111,5-0101,4-0100所以拼成8421BCD码的结果是:(0111 0101.0100)BCD;若将BCD码1000 0101.0101转换为十进制数:1000-8,0101-5,0101-5所以结果是:(85.5)D。
二进制编码的十进制数,简称BCD码(Binarycoded Decimal)。
这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符。4位二进制数码有16种组合,原则上可任选其中的10种作为代码,分别代表十进制中的0,1,2,3,4,5,6,7,8,9 这十个数符。最常用的BCD码称为8421BCD码,8.4.2.1 分别是4位二进数的位取值。
随着条形码使用率的增加,制作生成条形码也成了众多厂家必不可少的工作。那么当我们将申请下来的条形码数据编好之后该如何将其转换成条形码呢?本文我们就条形码软件来为大家演示下如何将数字转换成条形码。
首先,我们可以先将所有的条码数据录入保存在Excel中,一个单元格一个,以竖列、文本格式保存。
下面打开条形码软件看一下数字转换成条形码的详细步骤:
一、将数字导入条形码软件 打开软件后需要先设置好纸张尺寸,然后点击软件上方工具栏中的“数据库设置”,点击“添加”,选择Excel数据源管理,然后在弹出页面中点击“浏览”,选择需要导入的保存有条码数据的Excel表,然后点击“测试连接”,查看下方记录总数正确即可点击“添加”完成导入数据。
二、添加条形码 点击条形码软件左侧工具栏中的条形码图标,在画布上绘制条码样式:
绘制条形码之后,双击打开“图形属性-数据源”页面,点击左侧修改按钮,在弹出页面中选择数据库导入,然后核对下方连接数据源以及字段名称是否正确,确认后点击“编辑-确定”即可。
第一个条形码数据设置好之后,其实就已经将Excel表中的全部数字转换成条形码了,可以点击打印预览翻页查看生成效果:
从上图的条形码数据中可以发现,所有的数据都是根据Excel表中的顺序自动转换成了条形码,而且从操作时的步骤看,只需要添加好第一个条形码,其他所有的数据都一次性变成条形码了,非常的方便。