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

本文阅读 5 分钟
首页 代码,Java 正文

<font color="orange">「作者主页」:</font>士别三日wyx

img

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

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

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

        答案是转换为二进制。

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

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

        答案是BCD码

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

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

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

        「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码中二进制和十进制的对应关系如下:

3.2 8421编码的加法运算

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

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

        1 对应的二进制是 0001

         2 对应的二进制是 0010

        算术逻辑单元收到这两个值以后,就会执行加操作,就像我们小学的加法运算,如下图 img         这两个二进制相加的结果是 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

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

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

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

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

        右侧二进制0111 表示 7

        即 8 + 9 = 17

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/wangyuxiang946/article/details/121888905
-- 展开阅读全文 --
Redis底层数据结构--跳跃表
« 上一篇 04-28
BUUCTF Web [强网杯 2019]随便注
下一篇 » 06-24

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复