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 码的种类,是有很多的。

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

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

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

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

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

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

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




平面向量的加减法
向量AB-向量AC=向量CB 向量CB+向量BD=向量CD 向量CD-向量CD=0向量

平面向量的加减法是怎么给算的。
例如平行四边形ABCD的对角线AC、BD相交于点O 求:向量AB+向量CD=?向量DA+向量DC=?向量CB+向量+AB=?则:向量AB+向量CD=向量0 向量DA+向量DC=向量DB 向量CB+向量AB=向量DB

武威市15287854712: 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...

武威市15287854712: BCD码的运算法则是什么?
元宰通迪: (1)计算5+8;(2)计算8+8解:(1)将5和8以8421BCD输入机器,则运算如下:0101+)10001101结果大于9+)0110加6修正10011即13的BCD码结果是0011,即十进制数3,还产生了进位

武威市15287854712: BCD码的运算法则 -
元宰通迪: BCD码的运算规则:BCD码是十进制数,而运算器对数据做加减运算时,都是按二进制运算规则进行处理的.这样,当将 BCD码传送给运算器进行运算时,其结果需要修正. 修正的规则是:当两个BCD码相加,如果和等于或小于 1001(即十...

武威市15287854712: 两个BCD码相减 -
元宰通迪: MOV R0, A ;保存被减数.MOV A, #9AH ;100CLR CSUBB A, #60H ;减去减数,得到100的补数.ADD A, R0 ;使用加法即可.DA A ;调整为BCD数

武威市15287854712: BCD8421是如何进行加法运算的
元宰通迪: 8 4 2 1 加起来刚好等于15.这4个数的组合也可以表示16以内的任何数 这是16进制的一种表示方法 通常用于编码.

武威市15287854712: [汇编]压缩BCD码的乘除法算法 -
元宰通迪: 把压缩BCD码转换成二进制数再进行乘除运算,把结果转换回压缩BCD码就是了 不进行数制转换,就用压缩BCD硬算,多字节无符号的...你是要进行大数运算吧,先设计一个BCD格式,比如最多十位,...

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

武威市15287854712: 关于王爽的汇编语言的加减乘除指令这是汇编的加法指令!我想问下减法 除法 乘法 或者其他算数运算是怎么表示的呢? -
元宰通迪:[答案] 汇编算术运算指令 8086的算术运算类指令能够对二进制或十进制(BCD码)数进行加、减、乘、除运算,操作数的数据形式可以是8位或16位的无符号数或带符号数.对于单操作数指令,不允许使用立即数形式;对于双操作数指令,只有源操作可以...

武威市15287854712: 怎样进行BCD减法?阐述产生借位和使用修正因子的规则.将该规则应用于下面各减法中:8 - 3,4 - 8,5 - 9,2 - 7 -
元宰通迪: 同求 数字设计第二章2.32!!!!

武威市15287854712: 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

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