BCD码详细,通俗易懂分析 bcd码是什么详解

太多事情要忙,都好久没更新了,废话不多说开始吧!!!!
阅读本文所需知识:进制数转换及运算 。

BCD码详细,通俗易懂分析 bcd码是什么详解

文章插图
图片来源于网络
BCD码的概念
百度定义:BCD码(Binary-Coded Decimal?)亦称二进制十进制或二-十进制代码 。用4位二进制数来度表示1位十进制数从16位组合中取出的0~9这10个数码 。
例如:十进制28用BCD码表示(0010 1000) ps:0010(2)1000(8)概念一目了然
  • 它的作用是什么?
BCD码是二进制和十进制相互转换编码,这使二进制与十进制的转换更加便捷,同时保存数值的精确度,避免电脑作浮点运算所耗的时间 。
因为计算机中数据都是用二进制进行存储,所以二进制和十进制需要相互转换,它们转换是比较麻烦的,然而BCD码正好解决了这个问题 。BCD码把十进制每一位用4位二进制来表示 。上面那个例子就是证明 。
BCD码分类
  • 压缩码和非压缩码
压 缩 码:用4位二进制数来表示一位十进制数(例如:2(0010))
非压缩码:用8位二进制数来表示1位十进制数(例如:2(0000 00010))
那么问题来了,为什么不直接使用压缩码? 高效又节省空间 。
ps:因为一个字节是8位,而且每个数据所表示的长度不同 。
  • 有权码和无权码
有权码:8421码、2421码、5421码
无权码:余三码、余三循环码、格雷码
BCD码详细,通俗易懂分析 bcd码是什么详解

文章插图
图片来源于网络
有权码8421码
8421码是BCD码最常用的编码方式,也被称为BCD码 。
位权如名:8、4、2、1 (表示范围:0~9(0000~1001),禁用码:10~16(1010~1111)
例如:543D = 0101 0100 0011B (ps:D表示十进制数;B表示二进制数)
8421码对应ASICC码的第四位相同,这特点有利于简化输入输出过程中BCD码和字符代码的转换 。
  • 2421码(自补特性)加权码
位权:2、4、2、1
例如:642D=1100 0100 0010B
问题来了,仔细观察位权里有两个2,这样就会重复问题,比如说:0101和1011都对应5 。
所以做出规定:0101~1010不许用
禁用码:0101、0110、0111、1000、1001、1010
2421码是对9的自补代码(自补性)
即每一个2421码只要与自身按位取反,便可得到该数9的补数的2421码 。
例如:0100(4)即各位取反后正好为该数9的补码1011(5) 。
而0101取反后1010对应十进制10显然不满足自补码的要求 。
好处:给运算带来方便,因为可以利用其对9的补数将减法运算转变为加法运算
(0000)和(1111)、 (0001)和(1110)、 (0010)和(1101)、 (0011)和
(1100)、 (0100)和(1011)互为反码,仔细观察它们具有反射特性
做加法是若两个数之和为10正好等于二进制的16(0001+1111=16),于是便能高位自动产生进位信号 。
  • 5421
位权:5、4、2、1
注意位权不同表示的数也不同,看上面的例子相信你们也能理解了 。
禁止码:0101、0110、0111、1101、1110、1111
5421码同样也有2421码的自补性 。
BCD码详细,通俗易懂分析 bcd码是什么详解

文章插图
真值表
无权码
  • 余三码
余三码是在8421码基础上+0011(3)(比如:8421码0+0011(3)=0011)
【BCD码详细,通俗易懂分析 bcd码是什么详解】表示范围:3~12(0011~1100)
禁 用 码 :0~2(0000~0010)、13~16(1101~1111)
那么它的作用及特点是什么?
余三码同样也有对9的自补性,0和9, 1和8,…..5和4的余3码互为反码,这在求对于10的补码很方便 。
两个余3码表示的十进制数相加时,能产生正确的进位信号,但对“和”必须修正 。
修正方式:如果有进位信号则结果+0011(3),如果没有进位信号则结果减0011(3)
例如:
BCD码详细,通俗易懂分析 bcd码是什么详解

文章插图

有进位需修正 所以结果0010+ 0011(余三码3)= 2(转换十进制) 2+上进位10=12(结果正确)
ps:当两个十进制数的和是10时,相应的二进制编码正好是16,于是可自动产生进位信号,而不需修正,余3码常用在BCD码运算电路中 。
不懂的看下面的真值表对应,理解格雷码再理解余三循环码 。