《计算机组成原理》BCD码 8421编码原理剖析

简介: BCD码1. BCD码的作用

image.png

BCD码

1. BCD码的作用

2. BCD码的转换原理

3. 8421编码

3.1 8421编码的权重划分

3.2 8421编码的加法运算

3.3 8461编码的加6修正

1. BCD码的作用

       首先问大家一个问题:计算机是如何把二进制转换成十进制的?


       我们平时生活中常用的是十进制,即0 1 2 3 4 5 6 7 8 9,我们使用电脑运算时,会输入十进制的数字,电脑则返回十进制的运算结果。


       可实际上,电脑并不能运算十进制,那电脑是怎么运算的呢?


       答案是转换为二进制。


       当电脑收到我们输入的「十进制」之后,会先把十进制「转换」为二进制,对「二进制」进行运算,再将运算的结果转换为十进制,返回给我们。


       那问题又来了:计算机是如何将二进制和十进制进行转换的呢?


       答案是BCD码


2. BCD码的转换原理

       「BCD码」使用 4 位二进制来表示 1 位十进制,即使用 4 个位来存储一个十进制的值,使二进制和十进制之间的转换以快捷的进行。


       比如 使用4位二进制 0000 表示 十进制 0


       使用4位二进制 0001 表示 十进制 1


3. 8421编码

       「8421码」是最基本也是最常用的的一种BCD编码,由4位二进制组成,各位的权值分别是8、4、2、1,8421码的名字也是由此而来。


3.1 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


8421码中二进制和十进制的对应关系如下:

image.png

3.2 8421编码的加法运算

       当我们输入 1 + 2 以后,计算机是怎么计算的呢?


       首先,计算机会将十进制位对应的二进制交给算术逻辑单元(ALU)


        1 对应的二进制是 0001


        2 对应的二进制是 0010


       算术逻辑单元收到这两个值以后,就会执行加操作,就像我们小学的加法运算,如下图

image.png

       这两个二进制相加的结果是 0011 ,对应的十进制就是 3 ,即 1 + 2 = 3


3.3 8461编码的加6修正

       这时候又有一个问题,二进制对应的十进制只有10个,也就是只能表示0~9这几个值,如果相加的结果超过了这个范围该怎么表示呢?


       BCD码给出了一个解决方法:「加6修正」,即超过0~9范围的值加6(0110)


       比如 9 + 8,


       计算机首先会将十进制对应的二进制交给算术逻辑单元(ALU)


        9 对应的二进制是 1001


        8 对应的二进制是 1000


       算术逻辑单元收到这两个值以后,就会执行加操作,就像我们小学的加法运算,如下图


image.png

       相加的结果是 10001 ,这个二进制结果跟0~9范围内任何一个十进制都不匹配,即超出了这个范围,这时候电脑会对结果加上6(0110),如下图

image.png


       由于BCD码以4位保存一个值,对于不满4位的值,会在左侧补充 0 直至4位。


       结果中左侧二进制 0001 表示 1


       右侧二进制 0111 表示 7


       即 8 + 9 = 17


相关文章
|
9月前
|
人工智能 数据可视化 数据挖掘
从传统软件到SaaS:为什么更多企业选择订阅制服务?
本文详细介绍了SaaS的概念、优势及其在现代工作中的重要性。SaaS是一种通过互联网提供云计算服务,用户无需安装和维护本地软件,只需通过网络访问软件即可。SaaS通过自动更新和维护、订阅制收费模式等方式降低成本,提供更便捷的服务。
1488 4
从传统软件到SaaS:为什么更多企业选择订阅制服务?
|
人工智能 数据可视化 API
Dify-生成式 AI 应用创新引擎,本地搭建以及使用
Dify-生成式 AI 应用创新引擎,本地搭建以及使用
4739 1
|
存储 Java 测试技术
day28:Java零基础 - 进制转换
【7月更文挑战第28天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
181 6
|
存储
指针和数组简单填空题合集(纯刷题:60道)
指针和数组简单填空题合集(纯刷题:60道)
215 0
|
人工智能 搜索推荐 安全
Star 18k!推荐一款免费开源的简历生成神器,还搭配AI助力,面试官看了都不仅赞叹!
Star 18k!推荐一款免费开源的简历生成神器,还搭配AI助力,面试官看了都不仅赞叹!
655 2
|
安全 JavaScript 前端开发
深入理解Python中的try-except语句,避免代码崩溃的噩梦
深入理解Python中的try-except语句,避免代码崩溃的噩梦
370 0
|
存储 数据采集 数据处理
基于FPGA的音乐播放器系统设计_kaic
基于FPGA的音乐播放器系统设计_kaic
|
运维 数据可视化 中间件
一文搞懂SaaS、PaaS、IaaS的概念和异同
一文搞懂SaaS、PaaS、IaaS的概念和异同
63417 5
一文搞懂SaaS、PaaS、IaaS的概念和异同
|
数据格式 C++ Java
notepad++如何快速格式化代码
notepad++如何快速格式化代码
20543 0