BCD码解读

本文介绍了BCD码,重点讲解了8421码、2421码和余三码的工作原理,以及它们在将十进制数转换为二进制编码中的优势。通过举例和修正过程,展示了如何在计算中处理超出范围的情况。
摘要由CSDN通过智能技术生成

目录

基本介绍

8421码

余三码

2421码


基本介绍

BCD码的英文全称是Binary-Coded Decimal‎,简称BCD,按字面解释是二进制二进制十进制代码,是一种二进制的数字编码形式。通常用4位二进制代码对十进制数字符号进行编码,在这里会主要介绍的几种常用BCD码就是8421码,2421码和余3码。

疑问:BCD码是用二进制数对十进制数编码,明明可以直接把十进制数转化为二进制数,为什么非要搞一个四位对一位的BCD码?

解答:

要传输一个十进制数,肯定要先转成二进制,如果用传统的除二取余和乘二取整进行真实的转化,设计起来太复杂,如果单纯为了传输而不需要对数字进行加减等处理的话,搞个四位对一位的编码最省力,很容易用一个四输入一输出的编码器电路实现,传过去之后再用译码器转成十进制就行了。

作者:Anakin
链接:https://www.zhihu.com/question/52632287/answer/131358091
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

8421码

8421码是最基本最常用的BCD码,是十进制代码中最常用的一种。在这种编码方式中,每一位二值代码的“1”都代表一个固定数值。将每位“1”所代表的二进制数加起来就可以得到它所代表的十进制数字。

8421码将十进制数字从0到9编码如下:(跟我们正常理解的十进制转二进制一样)

  • 0表示为 0000
  • 1表示为 0001
  • 2表示为 0010
  • 3表示为 0011
  • 4表示为 0100
  • 5表示为 0101
  • 6表示为 0110
  • 7表示为 0111
  • 8表示为 1000
  • 9表示为 1001

十进制:    5     +    3   =  8

8421码:0101 + 0011 =  1000

十进制:    8     +    3   =   1       1

8421码:1000 + 0011 = 0001 0001

注意:8421码中1010-1111是没有十进制数与之对应,因此在计算结果超出1001时需要进行结果修正,由以上例子可见十进制计算结果为11,8421计算结果为10001,则修正为计算结果0001 0001,分别对应11的两个1,写的时候可以省略掉开头的零,即红色的部分。

结果修正:按照正常的二进制加法运算 1000 + 0011=1011,但我们可以知道1011并不在8421码的合法范围内,一个码是无法表示的,就是要俩个码来表示,也就是对结果进行修正,如果超出合法范围需要加 0110(6) 修正。也就是1011 + 0110=0001 0001。

余三码

余三码(余3码)是由 8421BCD码加上0011形成的一种无权码,由于它的每个字符编码比相应的8421码多3,故称为余三码。

十进制

8421BCD

余3码

0

0000

0011

1

0001

0100

2

0010

0101

3

0011

0110

4

0100

0111

5

0101

1000

6

0110

1001

7

0111

1010

8

1000

1011

910011100

俩个余三码进行加法时,都需要进行结果修正,具体修正方法为:如果有进位,则结果加0011(3) ,如果没有进位,结果减0011(3)(特别注意是要对每一个码)

十进制:    2     +    3   =  5

余三码:0101   +  0110 =  1000 

修正过程:0101 + 0110 = 1011 - 0011=1000

十进制:    8     +    3   =  11

余三码:1011    +   0110  =  0100 0100

修正过程:1011 + 0110 = 10001    即0001 0001

0001 + 0011 = 0100

0001 + 0011 = 0100

2421码

2421就是改变权值,原本的对于一个4为的二进制数,权值为8 4 2 1,采用的2421码的话就会更改为2 4 2 1

我们可以发现采用2421码的话出现“争议”的区域就是2~7这6个数,他们都有多种表示方法(其主要问题是两个2和一个4选谁的问题),基于这种考虑,一个很常用的编排规律就是:

  • 0~4不采用最高位的“2”
  • 5~9都采用最高位的“2”

当我们表示一个大于4的数字时候,第一位固定为1,小于等于4,第一位固定为0

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个风轻云淡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值