关于BCD码

      BCD码(Binary-Coded Decimal‎亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码(0~9),使二进制和十进制之间的转换得以快捷的进行,只要计算0~9之间转换,因此非常的方便,口算就可以算出来了。这种编码技巧最常用于会计系统的设计里???因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免去使电脑作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。

      在学习BCD码的时候,我了解到BCD码种有 有权码和无权码之分,一开始我看书,我看不懂这个权是什么意思,书上只写到“其编码种每位的值都是固定数,成为位权”,我就看不懂了,当天晚上上网查另外通俗点的说法,查到“有权码和无权码区别是每一位是否有权值。”,又看到各二进制位与权值相乘,并将乘积相加就得相应的十进制数,再加上一个例子:典型的8421码为有权码,“8421”表示从高到低各位二进制位对应的权值分别为8、4、2、1,所以8421BCD码“0111”,0×8+1×4+1×2+1×1=7D,其中D表示十进制(Decimal)数。看到这里我就懂了,其实里面有权无权一点都不复杂。有权码中除了有最常见的8421码,还有2421码5421码

      那么在学好有权码之后,轮到无权码。无权码:每一位都没有权值。任意一个编码都无法通过计算得出数值,因为它的数值都是设计者规定的,即现场赋予,换个现场,同一个编码可能代表另一个数值。所以无权码的数值并没有实际意义。无权码这么一跟有权码相比,特点就很明显,无权码纯属人为按自己的规则设计。

下面是个别种无权码的优点:

余三码是在8421码的基础上,将每个代码都加上0011而形成。它的主要优点是执行十位数相加时可以产生正确的进位信号,而且给减法运算带来了方便。

变换规则:使用它进行加法运算的规则是当两个余三码数相加不产生进位时,则应该从结果中减去0011;产生进位时则一方面将进位信号送给高位余三码,另一方面本位还要执行加上0011的修正操作。余3码中不存在(0000~0010) 和 (1101~1111),需进行修正。

4T2OO[MC[I280B40GZ7H{GY.png

格雷码的特点是任意两个相邻的代码只有一位二进制数不同,它又是一种循环码,其最大数与最小数之间也仅一位数不同,即“首尾相连”。它的优点就大大的了。在数字系统中,常要求代码按一定顺序变化。例如,按自然数递增计数,若采用8421码,则数0111变到1000时四位均要变化,而在实际电路中,4位的变化不可能绝对同时发生,则计数中可能出现短暂的其它代码(1100、1111等)。在特定情况下可能导致电路状态错误或输入错误。使用格雷码可以避免这种错误。它真的是一种可靠性编码,是一种错误最小化的编码方式。

变换规则:二进制码转换成格雷码:从最右边第一位开始,依次将每一位与左邻一位异或(XOR),作为对应格雷码该位的值,最左边一位不变。
格雷码转换成二进制码:从左边第二位起,将每位与左边一位解码后的值异或(XOR),作为该位解码后的值,最左边一位不变。

TX5[2GMFS[%6F$8~5)G6_%H.pngYL)E1@1V}HKH}J2(6LQKMDP.png

亲自深入的学习了以上知识,真的学到了很多,我也十分感慨,能想到上面这些码的人是多么聪明,真有意思。

说点什么

  Subscribe  
提醒