BCD码:8421码

介绍:

BCD(Binary-Coded Decimal)码,也叫二-十进制码,主要就是用4位二进制数来表示1位的从0~9的十进制数。

BCD码主要分为有权码(8421码,5421码,2421码)和无权码(余3码,余3循环码),这篇文章将主要介绍有权码中的8421码。

功能:

在一次编程练习中,需要分别提取出十进制数的个,十,百,千位。通过BCD码可以实现此功能。

二进制和十进制数字对照:

从二进制和十进制数字对照十分简单,就像原理所说的:用指定的4位二进制数来表示1位的从0~9的十进制数。对照表格即可:

 

换算算法:

8421码主要有两种换算算法,从二进制到十进制(B to D),从十进制到二进制(D to B)。

B to D:

从二进制转换到十进制需要用到权值8421来进行计算。只需要将8,4,2,1分别与二进制中的四位相乘后再相加,就能得到十进制对应的数字,如下表所示:

红色字体为二进制的8421码。 

D to B:

将十进制数编码成二进制数的过程相对复杂一点,我总结了一下,并把过程分为三个步骤,但是其中两个步骤是同级进行的。

1. 补0

在像转换的十进制数的二进制数前面,补上十进制数的位数乘以4的0。举个例子(下面都以这个为例子),我现在需要转换的十进制数是103,二进制为110 0111。此时十进制数的位数为3,所以我们就要在110 0111前补上3*4=12个0,一共3组。所以我们就能得到:

0000 0000 0000 110 0111

2. 移位&判断

得到补0后的数,需要把原数进行左移,并且每左移一次判断一次,哪一组0大于4,就将那组的二进制数+3(in Decimal)后,再进行移位;如果所有组的二进制数都小于或者等于4,就进行下一次移位。

直到将原数的7位(例子103)全部移位完,输出数据。

 由图可知,输出的数据正确。

并且我只需要4位4位的提取,就能清楚的知道这个数的个位,十位和百位,来进行我想要的操作。

  • 14
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值