bcd码的运算规则_计算机组成原理bcd码

bcd码的运算规则_计算机组成原理bcd码概览 什么是BCD码? BCD码是一种二进制的数字编码形式,用二进制编码的十进制代码。这种编码形式利用了4个bit来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。BCD码常用的有8421码、5421码、2421码和余3码,以下为编码表: 十进制数8421码5421码2421码余3码

概览

bcd码的运算规则_计算机组成原理bcd码

 

什么是BCD码?  

BCD码是一种二进制的数字编码形式,用二进制编码的十进制代码。这种编码形式利用了4个bit来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。BCD码常用的有8421码5421码2421码余3码,以下为编码表:

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

BCD码分类

BCD码又可分为压缩式和非压缩式两类。非压缩式一般是一个字节来表示,其中高四位置0,低四位表示相应数字;压缩式仅采用四位表示相应的数字。

BCD码可分为两类:有权码(8421、5421、2421)和无权码(余3码、格雷码、余3循环码)。

8421编码的权重划分

        「权重」即一位元素的重要程度,比如,4位二进制 0001 表示 十进制 1
        第一个位的二进制是0,权重为8,所代表的值就是 8 * 0 = 0
        第二个位的二进制是0,权重为4,所代表的值就是4 * 0 = 0
        第三个位的二进制是0,权重为2,所代表的值就是2 * 0 = 0
        第四个位的二进制是1,权重为1,所代表的值就是1 * 1 = 1
        那么4位二进制 0001 所代表的十进制就是 0 + 0 + 0 + 1 = 1,即十进制 1 

 
bcd码的运算规则_计算机组成原理bcd码

BCD码应用(为什么使用BCD码)

(1)BCD 码的应用还是非常广泛的,比如我们这节课要学的实时时钟,日期时间在时钟芯片中的存储格式就是 BCD 码,当我们需要把它记录的时间转换成可以直观显示的 ASCII 码时(比如在液晶上显示),就可以省去一步由二进制的整型数到 ASCII 的转换过程,而直接取出表示十进制 1 位数字的 4 个二进制位然后再加上 0x30 就可组成一个 ASCII 码字节了,这样就会方便的多,在后面的实际例程中将看到这个简单的转换。

(2)用来对浮点数编码,然后进行运算,保留了浮点数的精度。比如:0.6无法正确保存位二进制,这时候用BCD编码后参与运算,就可以保留浮点数的精确位数。

这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免去使计算机作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。

(3)led 编码,单片机

 (4)ASCII码数字(0~9)编码低就采用BCD编码:48(0011 0000)~57(0011 1001) 低四位就采用 BCD编码

BCD缺点

率较低,因为二进制数1010~1111并没有被用到,而且与二进制运算相比,十进制运算要烦琐得多。由于BCD码已不再是计算机设计时考虑的主要因素,所以本书将这部分内容略去°。

 

BCD码转10进制

 unsigned char bcd2(byte val){
    unsigned char i;
    i = val&0x0f; //按位与,i得到低四位数。
    val >>= 4; //右移四位,将高四位移到低四位的位置,得到高四位码值。
    val =val&0x0f; //防止移位时高位补进1,只保留高四位码值
    val= val*10; //高位码值乘以10
    i= val+i; //然后与低四位码值相加。
    return i;    //将得到的十进制数返回

 

 BCD码的加法运算

 

(1)加法的结果不在有效位范围之内,此时要加6=0110(进位)  做一些修正,才能得到正确结果。

(2)加法的结果在有效位范围内,就不要修正。

(3)无权码

bcd码的运算规则_计算机组成原理bcd码

 

1101不在有效位,此时要加6=0110  做一些修正,才能得到正确结果。

bcd码的运算规则_计算机组成原理bcd码

 

 

余三码

涉及到进位的问题,十进制各位两数相加,发生进位用8421码计算若和小于16进位不会产生.于是想了个办法把8421码都加3就好了,这样和就加上了6正好从十进制映射到十六进制

让进位正常发生.

(1)定义在BCD码加3的基础上得到的。这样连个BCD做加法运算的时候就能正常进位了。

(2)有权码

bcd码的运算规则_计算机组成原理bcd码

 

5421码和2421码中大于5的数字都是高位为1,5以下的高位为0。

2421码

数位权值为2,4,2,1.两个数位都有2就会出问题,例如0101和1011都对应5.所以做了规定:0101~1010不许用.2421码的好处是对9互补,需要了解一下二进制运算.简单理解:为运算提供了方便.

 bcd码的运算规则_计算机组成原理bcd码

 

0~4 前面收为都为0,5~9首位都为1

 

 5421码

 

格雷码

bcd码的运算规则_计算机组成原理bcd码
bcd码的运算规则_计算机组成原理bcd码

格雷码的核心思想是:相邻两数间只有一个位元改变.假设你家有个7挡电风扇,使用3个机械开关来控制风量.你在相邻两挡之间只需要拨动1次开关.如果是421编码,你从3挡(011)拨到4挡(100)需要关两个开一个,操作三次.格雷码的设计可以做到步进的代价最小.

 

 

 

练习题

1.判断题(1分)中()
(101001)2是(101001) 2、(52)8
(00101001) BCD、和 (233)16四个数中最小的数。(   )
101001=41   (00101001)=29  (52)8=42  

今天的文章bcd码的运算规则_计算机组成原理bcd码分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/45877.html

(0)
编程小号编程小号
上一篇 2023-09-06
下一篇 2023-09-06

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注