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码中二进制和十进制的对应关系如下:
3.2 8421编码的加法运算
当我们输入 1 + 2 以后,计算机是怎么计算的呢?
首先,计算机会将十进制位对应的二进制交给算术逻辑单元(ALU)
1 对应的二进制是 0001
2 对应的二进制是 0010
算术逻辑单元收到这两个值以后,就会执行加操作,就像我们小学的加法运算,如下图
这两个二进制相加的结果是 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
算术逻辑单元收到这两个值以后,就会执行加操作,就像我们小学的加法运算,如下图
相加的结果是 10001 ,这个二进制结果跟0~9范围内任何一个十进制都不匹配,即超出了这个范围,这时候电脑会对结果加上6(0110),如下图
由于BCD码以4位保存一个值,对于不满4位的值,会在左侧补充 0 直至4位。
结果中左侧二进制 0001 表示 1
右侧二进制 0111 表示 7
即 8 + 9 = 17