BCD码的加减法

作者&投稿:淫世 (若有异议请与网页底部的电邮联系)
用BCD码进行十进制数加法~

:
  0 2 5 6 -----> 0000 0010 0101 0110
+ 0 7 8 9 -----> + 0000 0111 1000 1001
--------1--1---------------------------------------------------
  1 0 4 5 0000 1001 1101 1111

最后面的1111,应该是十五。
使用调整指令,就会给它加6,那么它就变成 1 0101了。
还有两个数字,都需要调整。
最终结果:
  0 2 5 6 -----> 0000 0010 0101 0110
+ 0 7 8 9 -----> + 0000 0111 1000 1001
--------1--1---------------------------------------------------
  1 0 4 5   0001 0000 0100 0101

要知道BCD数是用四位二进制数来表示一位十进制数,那么两位BCD数进行加法时(和的范围是0~18),当结果超过9时就超过了一位BCD数的表示范围(0~9),这时需要用两位BCD数来表示该结果。比如3+8=11,用BCD码相加表示为 0011 + 1000 所得结果为1011,显然1011并不在一位BCD码的表示范围内,当给1011加上6(也就是0110时),得到的结果为 10001,也就是两位BCD数表示的11。
总结,当两位BCD数相加的结果大于9时,需要进行加6修正。
设计该“加6修正逻辑”的过程为:
卡诺图法:五变量的卡诺图,C0 F4 F3 F2 F1。用F表示结果,当F = 1时,表示需要作加6修正。
说明:C0 F4 F3 F2 F1为两位BCD数进行二进制相加后得到的结果(范围为0~18,因此需要5位二进制数来表示)。当C0为1时,也就是说相加结果大于15(在16~18之间),此时需要加6修正,F = 1。当C0为0时,表示所得结果在0~15之间,这时当结果也大于9时,需要加6修正,F = 1。
由于这里不方便画卡诺图了,就直接上结果:
F = C0 + F4&F3 + F4&F2
对上面的 F 的表达式变换一下就行了,变成只用与非门表示的形式。"~" 表示 “逻辑非”
F= ~[~(C0 + F4&F3 + F4&F2)] = ~{ ~C0 & [~(F4&F3)] & [~(F4&F2)] }

BCD码减法也可用补码运算代替,原理和之前写过的八位二进制数补码运算原理相同。

八位二进制数的范围是00H~FFH,八位BCD码的范围是00H~99H,也可以像补码运算一样画一个时钟,起点是00H,00H逆时针的第一个数是99H。只要有时钟,就可以用补码运算规则,那么BCD码的补码如何求。

举例说明,红色弧线便是08H的补码,计算方法是99H+01H-08H = 9AH - 08H,所以用9AH减去该BCD码,便可得其补码。

另外,做BCD码加减法时,还要进行调整,因为十六进制加法是逢16进1,BCD码是逢10进1,相差6。

扩展资料:

在计算机内部实现BCD码之间的算术运算要复杂一些,即在某些情况下,对加法运算的结果进行修正。修正规则如下:

(1) 若两个8421码数相加之和等于或小于1001,不需修正。

(2) 若相加和在10-15之间,一方面应向高位产生进位,本身还要进行加6修正,进位是在加6修正时产生的。

(3) 若相加之和在16-18之间,向高位进位会在相加过程中自己产生,对本位还要进行加6修正。

参考资料:百度百科——BCD码



当两个BCD码相加,如果和等于或小于 1001(即十进制数9),不需要修正;

如果相加之和在 1010 到1111(即十六进制数 0AH~0FH)之间,则需加 6 进行修正;

如果相加时,本位产生了进位,也需加 6 进行修正。

这样做的原因是,机器按二进制相加,所以 4 位二进制数相加时,是按“逢十六进一”的原则进行运算的,而实质上是 2 个十进制数相加,应该按“逢十进一”的原则相加。

16 与10相差 6,所以当和超过 9或有进位时,都要加 6 进行修正。下面举例说明。

【例 1.3】 需要修正 BCD码运算值的举例。

计算 5+8:

解:将 5 和 8 以 8421 BCD输入机器,则运算如下:

0 1 0 1

+) 1 0 0 0

1 1 0 1 结果大于 9

+) 0 1 1 0 加 6 修正

1 0 0 1 1 即13 的 BCD码

结果是 0011,即十进制数3,还产生了进位。5+8=13。


扩展资料

BCD码的分类:

BCD码可分为有权码和无权码两类:

有权BCD码有8421码、2421码、5421码,其中8421码是最常用的;无权BCD码有余3码,余3循环码等。

1、8421:

8421 BCD码是最基本和最常用的BCD码,它和四位自然二进制码相似,各位的权值为8、4、2、1,故称为有权BCD码。

和四位自然二进制码不同的是,它只选用了四位二进制码中前10组代码,即用0000~1001分别代表它所对应的十进制数,余下的六组代码不用。

2、5421和2421:

5421 BCD码和2421 BCD码为有权BCD码,它们从高位到低位的权值分别为5、4、2、1和2、4、2、1。

这两种有权BCD码中,有的十进制数码存在两种加权方法。

这说明5421 BCD码和2421 BCD码的编码方案都不是惟一的,表1-2只列出了一种编码方案。

参考资料

百度百科-BCD码



加法:

由于编码是将每个十进制数用一组4位二进制数来表示,因此,若将这种BCD码直接交计算机去运算,由于计算机总是把数当作二进制数来运算,所以结果可能会出错。例:用BCD码求38+49。

解决的办法是对二进制加法运算的结果采用"加6修正,这种修正称为BCD调整。即将二进制加法运算的结果修正为BCD码加法运算的结果,两个两位BCD数相加时,对二进制加法运算结果采用修正规则进行修正。

修正规则:

1、如果任何两个对应位BCD数相加的结果向高一位无进位,若得到的结果小于或等于9,则该位不需修正;若得到的结果大于9且小于16时,该位进行加6修正。

2、如果任何两个对应位BCD数相加的结果向高一位有进位时(即结果大于或等于16,注意不是修正时的进位),该位进行加6修正。

3、低位修正结果使高位大于9时,高位进行加6修正。

减法:两个组合BCD码进行减法运算时,当低位向高位有借位时,由于"借一作十六"与"借一作十"的差别,将比正确的结果多6,所以有借位时,可采用"减6修正法"来修正。

两个BCD码进行加减时,先按二进制加减指令进行运算,再对结果用BCD调整指令进行调整,就可得到正确的十进制运算结果。 

加法例子:

1、用BCD码求35+21:35-> 0011 0101+;21-> 0010 0001=;0101 0110->56

注意:0101+0001并没有满足上述3条规则,同时0011+0010也没有满足上述3条规则,所以结果不作处理。

2、BCD码求25+37:25->0010 0101+;37->0011 0111=;0101 1100+(低位0101+0111=1100->12>9所以需要调整);06-> 0110=;0110 0010->62

注意:在给低位加0110调整时也有向高位进位发生,但是这是在调整时的进位,故不做处理。

扩展资料:

BCD码与十进制数的转换

BCD码与十进制数的转换关系很直观,相互转换也很简单,将十进制数75.4转换为BCD码:7->0111,5->0101,4->0100所以拼成8421BCD码的结果是:

(0111 0101.0100)BCD;若将BCD码1000 0101.0101转换为十进制数:1000->8,0101->5,0101->5所以结果是:(85.5)D。

注意:同一个8位二进制代码表示的数,当认为它表示的是二进制数和认为它表示的是二进制编码的十进制数时,数值是不相同的。

例如:00011000,当把它视为二进制数时,其值为24;但作为2位BCD码时, 其值为18。

例如:00011100,如将其视为二进制数,其值为28,但不能当成BCD码,因为在8421BCD码中,它是个非法编码 。

参考资料:百度百科—8421BCD码



二进制编码的十进制数,简称BCD码(Binarycoded Decimal). 这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符。4位二进制数码有16种组合,原则上可任选其中的10种作为代码,分别代表十进制中的0,1,2,3,4,5,6,7,8,9 这十个数符。最常用的BCD码称为8421BCD码,8.4.2.1 分别是4位二进数的位取值。 点击此处将给出十进制数和8421BCD编码的对应关系表。
1、BCD码与十进制数的转换
BCD码与十进制数的转换.关系直观,相互转换也很简单,将十进制数75.4转换为BCD码如:
75.4=(0111 (0101.0100)BCD 若将BCD码1000 0101.0101转换为十进制数如: (1000 0101.0101)BCD=85.5
注意:同一个8位二进制代码表示的数,当认为它表示的是二进制数和认为它表示的是二进制编码的十进制数时,数值是不相同的。
例如:00011000,当把它视为二进制数时,其值为24;但作为2位BCD码时, 其值为18。
又例如00011100,如将其视为二进制数,其值为28,但不能当成BCD码,因为在8421BCD码中,它是个非法编码 .
2、BCD码的格式
计算机中的BCD码,经常使用的有两种格式,即分离BCD码,组合BCD码。
所谓分离BCD码,即用一个字节的低四位编码表示十进制数的一位,例如数82的存放格式为:
_ _ _1 0 0 0 _ _ _ _0 0 1 0 其中_表示无关值。
组合BCD码,是将两位十进制数,存放在一个字节中,例82的存放格式是1000 0010
3、BCD码的加减运算
由于编码是将每个十进制数用一组4位二进制数来表示,因此,若将这种BCD码直接交计算机去运算,由于
计算机总是把数当作二进制数来运算,所以结果可能会出错。例:用BCD码求38+49。
解决的办法是对二进制加法运算的结果采用"加6修正,这种修正称为BCD调整。即将二进制加法运算的结果修正为BCD码加法运算的结果,两个两位BCD数相加时,对二进制加法运算结果采用修正规则进行修正。修正规则:
(1)如果任何两个对应位BCD数相加的结果向高一位无进位,若得到的结果小于或等于9,则该不需修正;若得到的结果大于9且小于16时,该位进行加6修正。
(2)如果任何两个对应位BCD数相加的结果向高一位有进位时(即结果大于或等于16),该位进行加6修正.
(3)低位修正结果使高位大于9时,高位进行加6修正。
下面通过例题验证上述规则的正确性。
用BCD码求35+21 BCD码求25+37 用BCD码求38+49 用BCD码求42+95
用BCD码求91+83 用BCD码求94+7 用BCD码求76+45
两个组合BCD码进行减法运算时,当低位向高位有借位时,由于"借一作十六"与"借一作十"的差别,将比正确的结果多6,所以有借位时,可采用"减6修正法"来修正.两个BCD码进行加减时,先按二进制加减指令进行运算,再对结果用BCD调整指令进行调整,就可得到正确的十进制运算结果。 实际上,计算机中既有组合BCD数的调整指令,也有分离BCD数的调整指令。另外,BCD码的加减运算,也可以在运算前由程序先变换成二进制数,然后由计算机对二进制数运算处理,运算以后再将二进制数结果由程序转换为BCD码

BCD 码的种类,是有很多的。

有些 BCD 码,属于“无权码”,根本就没有运算的功能。

如果是 8421BCD 码,就可以像普通二进制数一样,相加减。

人工来做算术运算,还是比较简单的,需要“逢十进一”时,你自己注意就行了。

如果是用计算机来加减,就麻烦一些了。

因为,计算机只会做二进制,所以,它算出的结果,肯定是二进制了。

那么,在事后,就必须进行“十进制调整”,才能得到 BCD 码的结果。

一种进行“十进制调整”的电路如下:




QC七大手法是?
1、QC旧七大手法:特性要因分析图、柏拉图、查检表、层别法、散布图、直方图、管制图。2、QC新七大手法:关系图、系统图法、KJ法、箭头图法、矩阵图法、PDPC法、矩阵数据解析法。品管新七大手法,也叫品管新七大工具,其作用主要是用较便捷的手法来解决一些管理上的问题,与原来的“旧”品管七大手法...

凌河区18563145757: BCD码的加减法 -
慎重小儿: 二进制编码的十进制数,简称BCD码(Binarycoded Decimal). 这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符.4位二进制数码有16种组合,原则上可任选其中的10种作为代码,分别代表十进制中的0,1,2,3,4,5,6,7...

凌河区18563145757: BCD码的运算法则 -
慎重小儿: BCD码的运算规则:BCD码是十进制数,而运算器对数据做加减运算时,都是按二进制运算规则进行处理的.这样,当将 BCD码传送给运算器进行运算时,其结果需要修正. 修正的规则是:当两个BCD码相加,如果和等于或小于 1001(即十...

凌河区18563145757: BCD码的运算法则是什么?
慎重小儿: (1)计算5+8;(2)计算8+8解:(1)将5和8以8421BCD输入机器,则运算如下:0101+)10001101结果大于9+)0110加6修正10011即13的BCD码结果是0011,即十进制数3,还产生了进位

凌河区18563145757: BCD8421如何进行加法计算的?非常非常感谢,尽快
慎重小儿: 对于四位BCD码:从高位到低位用对应为分别x8 ,x4,x2 ,x1 然后再相加

凌河区18563145757: BCD码和二进制码如何相加 -
慎重小儿: BCD码就是用二进制代码表示的十进制数,就是说数据可以从右到左,每四位表示一位十进制数. 这两个数看作都是BCD编码,则: 第一个数0011,0000BCD=30=11110B, 第二个数0101,0010BCD=52=110100B 答案A-D加出来的结果: A:10000010,B:1100100,C:111000,D:1010010没有对的呀???

凌河区18563145757: BCD码的运算 -
慎重小儿: 这是BCD码运算,不是直接的2进制计算,需要进行BCD纠正,1101已经超出了BCD码的范围,肯定是要进位的,1100也超出了BCD码的范围,也是要进位的,我忘了BCD码纠正的运算命令了,每次进行完运算都会纠正一次.

凌河区18563145757: 为什么BCD码十进制数加减运算与要进行调整 -
慎重小儿: BCD码是0-9,而二进制的4位可以表示0-F,那么从A-F就超出了BCD码的表示范围,就要进行进位了(加法时),而减法时,借位不是借16,而是借10,所以也需要调整.

凌河区18563145757: 2字节BCD码减法 汇编程序 -
慎重小儿: BCD码相减等于加上减数的补数.如55-22 就是55+(100-22)=133,丢掉进位之后,就能得到正确的结果.由于影响进位,因此CY会变为1的.具体程序如下:CLR C MOV A, #9AH ;做100-22的减法 SUBB A, #22H ADD A, #55H DA A

凌河区18563145757: BCD8421是如何进行加法运算的
慎重小儿: 8 4 2 1 加起来刚好等于15.这4个数的组合也可以表示16以内的任何数 这是16进制的一种表示方法 通常用于编码.

凌河区18563145757: 怎样进行BCD减法?阐述产生借位和使用修正因子的规则.将该规则应用于下面各减法中:8 - 3,4 - 8,5 - 9,2 - 7 -
慎重小儿: 同求 数字设计第二章2.32!!!!

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网