BCD 码

以前,一直知道BCD编码,可就是不知道为什么要用到BCD编码,BCD编码有什么作用。网上大部分人也在人云亦云的讲些BCD码和二进制码之间的转换关系。

不懂得BCD码的前世今生,就是记住了它和二进制码之间的转换关系又有什么用呢?

现在的计算机系统只认二进制,所有我们看到计算机系统表现出来的,无论是悦耳动听的歌曲,美妙的图像,还是枯燥的数字,奇妙的文字,这些丰富多彩的万千世界,可惜,在计算机系统里都是一对冰冷的二进制数字了。

那计算机里面的二进制如何和外部丰富多彩的世界联系上的呢?这就是需要编码了。

一个二进制数字可以表示两种状态,也就是说可以携带两种信息。比如0定义为黑色,1定义为白色。那么通过我们预订的这个编码潜规则,当计算机输出0时,我们就知道计算机系统认为这个地方是黑色,赶快跳动黑色信息到屏幕上去,计算机输出白色则反之。呵呵。如果两个二进制数呢合,就可以通过组合表示4种信息状态。这时可以定义四种颜色状态,比如浅黑,浅白和黑白。

同样道理,人类现实生活中有十进制数了,那如果用计算机表示,就需要把计算机里面二进制进行编码了。但是数字编码有一个特殊和容易混淆的地方就在于,一般人潜意识里认为计算机里是存贮二进制数,现实世界是十进制数,本来两者之间不就要天然对应关系吗?

其实,谁也没说计算机里存贮的一些二进制数就是数字,隔壁二大爷没有说过,我也没有说过。但是,你可以设定这种编码规则,就是你认为一个字节里存贮的一堆二进制数有MSB或LSB的区别,本身有权,就是组合的数字,这时就是你的编码规则,这个数就对应外面的十进制数了。当然,这个编码规则当然行。但是BCD码闪亮登场,它有强于你刚才说的编码规则,当然强,不强你用啊?

如果计算机系统里一个二进制序列 为 1111 0000 1111 0000 1111 0000 ,那么你把它变成十进制试试看? 多少加法多少乘法哦。。。。。。。。。。。。。。。但是用BCD码,则完全没有这个问题,永远只有四位的二进制加法,简单多少?谁用谁知道。

从上面可以看出,编码规则的选择非常重要。具体见附录哦。。。。。。

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

由于十进制数共有0、1、2、……、9十个数码,因此,至少需要4位二进制码来表示1位十进制数。4位二进制码共有2^4=16种码组,在这16种代码中,可以任选10种来表示10个十进制数码,共有N=16!/(16-10)!约等于2.9乘以10的10次方种方案。常用的BCD代码列于末。

常用BCD编码方式
最常用的BCD编码,就是使用"0"至"9"这十个数值的二进码来表示。这种编码方式,在中国大陆称之为“8421码”。除此以外,对应不同需求,各人亦开发了不同的编码方法,以适应不同的需求。这些编码,大致可以分成有权码和无权码两种:

有权BCD码,如:8421(最常用)、2421、5421… 
无权BCD码,如:余3码、格雷码… 
以下为三种常见的BCD编码的比较。

十进数 8421-BCD码 余3-BCD码 2421-A码 
(M10) D C B A C3 C2 C1 C0 a3 a2 a1 a0 
0 0 0 0 0 0 0 1 1 0 0 0 0 
1 0 0 0 1 0 1 0 0 0 0 0 1 
2 0 0 1 0 0 1 0 1 0 0 1 0 
3 0 0 1 1 0 1 1 0 0 0 1 1 
4 0 1 0 0 0 1 1 1 0 1 0 0 
5 0 1 0 1 1 0 0 0 0 1 0 1 
6 0 1 1 0 1 0 0 1 0 1 1 0 
7 0 1 1 1 1 0 1 0 0 1 1 1 
8 1 0 0 0 1 0 1 1 1 1 1 0 
9 1 0 0 1 1 1 0 0 1 1 1 1

 

常用BCD码

十进制数        8421码        5421码        2421码        余3码        余3循环码
0         0000        0000        0000         0011          0010
1         0001        0001        0001         0100          0110
2         0010        0010        0010         0101          0111
3         0011        0011        0011         0110          0101
4         0100        0100        0100         0111          0100
5         0101        1000        1011         1000          1100
6         0110        1001        1100         1001          1101
7         0111        1010        1101         1010          1111
8         1000        1011        1110         1011          1110
9         1001        1100        1111         1100          1010 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值