0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

二进制编码的十进制表示转换解码器

模拟对话 来源:陈年丽 2019-06-24 09:31 次阅读

Binary Coded Decimal,或BCD,是将十进制数转换为二进制数的另一个过程

正如我们在教程的二进制数部分所看到的,使用了许多不同的二进制代码在数字和电子电路中,每个都有自己的特定用途。

由于我们自然生活在十进制(基数为10)的世界中,我们需要一些方法将这些十进制数转换为二进制数(base-2)计算机和数字电子设备理解的环境,以及二进制编码的十进制代码允许我们这样做。

我们之前已经看到,n位二进制代码是一组“n”位,假定为 2 n 1和0的不同组合。二进制编码十进制系统的优点是每个十进制数字由一组4个二进制数字或位表示,其方式与十六进制大致相同。因此,对于10位十进制数字(0到9),我们需要一个4位二进制代码。

但不要混淆,二进制编码的十进制不一样十六进制。而4位十六进制数有效至 F 16 表示二进制 1111 2 ,(十进制15) ,二进制编码的十进制数停在 9 二进制 1001 2 。这意味着虽然可以使用四个二进制数字表示16个数字( 2 4 ),但在BCD编号系统中,六个二进制代码组合: 1010 (十进制10), 1011 (十进制11), 1100 (十进制12), 1101 (十进制13), 1110 (十进制14)和 1111 (十进制15)被归类为禁号,不能使用。

二进制编码小数的主要优点是它允许在decimal(base-10)和binary(base-2)表单之间轻松转换。但是,缺点是BCD代码是浪费的,因为不使用 1010 (十进制10)和 1111 (十进制15)之间的状态。然而,二进制编码的十进制有许多重要的应用,特别是使用数字显示。

在BCD编号系统中,十进制数被分成四位,用于数字中的每个十进制数字。每个十进制数字由其加权二进制值表示,执行数字的直接转换。因此,一个4位组表示每个显示的十进制数字,从 0000 表示零到 1001 表示九。

因此,例如,十进制的 357 10 (三百五十七)将以二进制编码的十进制表示为:

357 10 = 0011 0101 0111 (BCD)

然后我们可以看到BCD使用加权编码,因为每个4位组的二进制位表示最终值的给定权重。换句话说,BCD是加权代码,二进制编码十进制代码中使用的权重是 8 , 4 , 2 , 1 ,通常称为8421代码,因为它形成相关十进制数字的4位二进制表示。

十进制数字的二进制编码十进制表示

h3>

Binary Power 2 3 2 2 2 1 2 0
二进制重量: 8 4 2 1

左边每个十进制数的十进制重量增加10倍。在BCD数字系统中,每个数字的二进制权重增加 2 如图所示。然后第一个数字的权重为 1 ( 2 0 ),第二个数字的权重为 2 ( 2 1 ),第三个是 4 的重量( 2 2 ) ,第四个权重 8 ( 2 3 )。

然后是十进制(denary)数字与加权二进制编码的十进制数字如下所示。

二进制编码十进制的真值表

然后我们可以看到8421 BCD代码只不过是每个二进制数字的权重,每个十进制(denary)数字表示为其四位纯二进制数。

十进制到BCD转换

正如我们上面所看到的,十进制到二进制编码十进制的转换非常类似于十六进制到二进制的转换。首先,将十进制数字分成加权数字,然后记下表示每个十进制数字的等效4位8421 BCD代码,如图所示。

二进制编码十进制示例No1

使用在上表中,将以下十进制(denary)数字转换为:85 10 ,572 10 和8579 10 到它们的8421 BCD等价物中。

85 10 = 1000 0101 (BCD)

572 10 = 0101 0111 0010 (BCD)

8579 10 = 1000 0101 0111 1001 (BCD)

请注意生成的二进制数后转换将是十进制数字的真正二进制转换。这是因为二进制代码转换为真正的二进制计数。

BCD到十进制转换

从二进制编码的十进制到十进制的转换与上面的完全相反。只需将二进制数分成四位数组,从最低有效位开始,然后写入每个4位组所代表的十进制数。如果需要生成完整的4位分组,最后添加额外的零。例如, 110101 2 将变为: 0011 0101 2 或 35 10 十进制。

二进制编码的十进制示例No2

转换以下二进制数:1001 2 ,1010 2 ,1000111 2 和10100111000.101 2 到它们的十进制等值中。

1001 2 = 1001 BCD = 9 10

1010 2 = 这会产生错误,因为它是十进制 10 10 且不是有效的BCD编号

1000111 2 = 0100 0111 BCD = 47 10

10100111000.101 2 = 0101 0011 0001.1010 BCD = 538.625 10

BCD到十进制或十进制到BCD的转换是一个相对简单的任务,但我们需要记住BCD数是十进制数而不是二进制数数字,即使它们是用比特表示的。十进制数的BCD表示很重要,因为大多数人使用的基于微处理器的系统需要在十进制系统中。

然而,虽然BCD易于编码和解码,但它不是存储数字的有效方式。在十进制数的标准8421 BCD编码中,表示给定十进制数所需的各个数据位的数量将始终大于等效二进制编码所需的位数。

例如,二进制从0到999的三位十进制数仅需要10位( 1111100111 2 ),而在二进制编码的十进制中,相同的数字至少需要12 -bits( 0011 1110 0111 BCD )用于相同的表示。

此外,使用二进制编码的十进制数执行算术任务可能有点尴尬每个数字不能超过9.在BCD中添加两个十进制数字将产生一个可能的进位位1,需要将其添加到下一组4位。

如果二进制和添加的进位位等于或小于9(1001),相应的BCD数字是正确的。但是当二进制和大于9时,结果是无效的BCD数字。因此,最好将BCD数转换为纯二进制数,执行所需的加法,然后在显示结果之前将其转换回BCD。

然而,在微电子和计算机中使用BCD编码系统系统在二进制编码的十进制数据打算显示在一个或多个7段LED或LCD显示器上的情况下特别有用,并且有许多流行的集成电路可用于提供BCD输出或输出。

一个常见的IC是74LS90异步计数器/分频器,它包含独立的2分频和5分频计数器,可以一起使用以产生具有BCD输出的10分频计数器。另一个是74LS390,它是基本74LS90的双版本,也可以配置为产生BCD输出。

但最常用的BCD编码IC是74LS47和74LS48 BCD到7-段解码器/驱动器,它转换计数器的4位BCD码等,并将其转换为所需的显示代码,以驱动7段LED显示器的各个段。虽然两个IC功能相同,但74LS47具有用于驱动共阳极显示器的低电平有效输出,而74LS48具有用于驱动共阴极显示器的高电平有效输出。

二进制编码十进制解码器IC

二进制编码的十进制摘要

我们在这里看到二进制编码的十进制或BCD只是十进制数字的4位二进制代码表示,每个十进制数字在整数和小数部分中替换为二进制等效。 BCD代码使用4位来表示0到9的10位十进制数字。

因此,例如,如果我们想要显示0到9(一位数)范围内的十进制数字,我们会需要4个数据位(半字节),0到99范围内的十进制数,(两位数)我们需要8位(一个字节),0到999范围内的十进制数,(三位数) )我们需要12位,依此类推。使用单字节(8位)存储或显示两个BCD数字,允许字节保存00-99范围内的BCD编号,称为压缩BCD 。

标准二进制编码十进制代码通常称为加权8421 BCD代码,其中8,4,2和1表示从最高有效位(MSB)开始并向最低有效位开始的不同位的权重位(LSB)。 BCD码的各个位置的权重为: 2 3 = 8 , 2 2 = 4 , 2 1 = 2 , 2 0 = 1 。

主要二进制编码十进制系统的优点在于,与纯二进制系统相比,它是一种快速有效的系统,可将十进制数转换为二进制数。但是BCD代码是浪费的,因为许多4位状态(10到16)没有使用,但十进制显示有重要的应用。

十进制数 BCD 8421代码
0 00000000
1 00000001
2 00000010
3 00000011
4 00000100
5 00000101
6 00000110
7 00000111
8 00001000
9 00001001
10(1 + 0) 00010000
11(1 + 1) 00010001
12(1 + 2) 00010010
... ...
20(2 + 0) 00100000
21(2 + 1) 00100001
22(2 + 2) 00100010
等,继续以四人为一组

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 解码器
    +关注

    关注

    9

    文章

    1073

    浏览量

    40151
  • 真值表
    +关注

    关注

    0

    文章

    24

    浏览量

    14976
  • 二进制数
    +关注

    关注

    0

    文章

    12

    浏览量

    7689
收藏 人收藏

    评论

    相关推荐

    如何实现二进制和BCD码数据的相互转变?

    如何实现二进制和BCD码数据的相互转变? 二进制码是将十进制数字表示二进制数和十进制数的一种表示
    的头像 发表于 02-18 14:51 437次阅读

    二进制与逻辑电平的变化范围

    二进制中的两个数字0和1称为位(bit, 是二进制数字binary digit的缩写)。在数字电路中,使用两个不同的电平表示这两个位。一般情况下,1 用高电平表示,0用低电平
    的头像 发表于 02-04 16:54 526次阅读
    <b class='flag-5'>二进制</b>与逻辑电平的变化范围

    二进制、八进制、十六进制在现实当中有什么意义?

    ,我们可以从数字存储和数据传输的角度来看这些进制的意义。计算机内部使用的是二进制,即由0和1组成的数字系统。这是因为计算机中的所有数据都被转化为二进制形式进行处理和存储。人们使用十进制
    的头像 发表于 01-16 11:14 589次阅读

    10进制转换二进制的算法

    十进制转换二进制是计算机科学中非常基础且重要的概念之一。在理解和应用计算机科学的基础知识时,掌握这个算法是至关重要的。 在开始讲解十进制转换
    的头像 发表于 01-15 10:32 567次阅读

    你知道十进制二进制如何进行转换吗?

    你知道十进制二进制如何进行转换吗? 当我们提到数字系统时,最常见的是十进制系统和二进制系统。十进制
    的头像 发表于 12-20 17:05 667次阅读

    十进制、十六进制二进制数制的区别

    计算机内部一般也是8位的倍数(8位= 1字节),所以每个字节可以方便地用2个十六进制数字表示。对于工程师来说,这比长的二进制数字序列更容易处理,但是计算机内部仍然是以2为基数的二进制
    的头像 发表于 11-28 10:45 652次阅读
    <b class='flag-5'>十进制</b>、十六<b class='flag-5'>进制</b>和<b class='flag-5'>二进制</b>数制的区别

    二进制数据及取值范围的计算方法

    本文介绍二进制数据的相关知识,如定义、取值范围计算、转换十进制的方法以及一些常见位数的二进制数据的取值范围等。
    的头像 发表于 11-08 15:48 823次阅读
    <b class='flag-5'>二进制</b>数据及取值范围的计算方法

    求助,如何理解把十进制转为二进制

    #include int fact(int n) { if(n<2)//将2换成其它数如8就可输出8进制的结果 return n; else { return fact(n/2)*10+n%2;//将二进制结果整个输出 } } 感觉return后面函数在调用
    发表于 10-16 08:04

    请问bcd码和二进制有什么关系?

    这个bcd码和二进制有什么关系? bcd 表示0011001是19(十进制) 二进制表示0011001是25(十进制) 这个怎么确定是哪个?
    发表于 10-07 06:02

    如何丢弃函数的二进制代码填入SRAM的二进制代码?

    应用程序 : 示例代码演示了如何丢弃函数的二进制代码, 然后填入 SRAM 的二进制代码, 然后调用它 。 BSP版本:M451系列BSP V3.01.001 硬件: 任何 M451 系列板块
    发表于 08-23 06:34

    二进制加权数模转换器讲解

    二进制加权数模转换器是一种将数字二进制转换成与数字数值成比例的等效模拟输出信号的数据转换器。
    发表于 06-29 11:34 1013次阅读
    <b class='flag-5'>二进制</b>加权数模<b class='flag-5'>转换</b>器讲解

    二进制解码器开源设计

    电子发烧友网站提供《二进制解码器开源设计.zip》资料免费下载
    发表于 06-16 15:01 0次下载
    <b class='flag-5'>二进制</b><b class='flag-5'>解码器</b>开源设计

    浅谈PLC中常用进制及相互转换方法

    BCD码是用四位二进制表示一位十进制数,所以转换方法类似二进制转十六进制“取四合一”法,四位组合后转成
    发表于 06-10 07:11 622次阅读
    浅谈PLC中常用<b class='flag-5'>进制</b>及相互<b class='flag-5'>转换</b>方法

    二进制译码器和二-十进制译码器介绍

    输入:二进制代码,有n个; 输出:2^n 个特定信息。 1.译码器电路结构 以2线— 4线译码器为例说明 2线— 4线译码器的真值表为:
    的头像 发表于 04-30 16:29 3652次阅读
    <b class='flag-5'>二进制</b>译码器和二-<b class='flag-5'>十进制</b>译码器介绍

    如何实现一个十进制二进制转换

    让我们继续收集方便的子程序并实现一个十进制二进制转换: 代码:全选 [decbin] i = 1 r = 0 binval = 0 nr = decval Do r = nr % 2 nr
    发表于 04-26 07:55