首页 > 编程知识 正文

补码相加怎么算的,补码的补码是原码

时间:2023-05-06 08:58:03 阅读:144105 作者:2044

补码加、减运算规则

在计算机中,算术的加减法通常是以补数进行的。 那个规则是:

[X Y]补=[X]补[Y]补,[X-Y]补=[X]补- [Y]补=[X]补[-Y]补

它有补码表示的被加(减)数和加(减)数,为了计算补码表示的二数之和或二数之差,只需要在二数补码上直接执行加减运算即可,码位被与数值位同等对待,一起参与运算,运算结果不溢出,不存在另外,还可以看出,在实现减法运算时,使用加法器电路,将减数负数的补数发送到加法器即可。 有了一定数量的补数后,求该数的负数补数,只需将该数的补数逐位反过来,在最低位加1即可。 例如,如果[Y]补充=101101,则[-Y]补充=010011,大大简化了加减运算中使用的电路和加减运算的实现算法。

下一个问题是如何检查加减运算中的溢出问题。 通常有以下三种表达方式。

(1)如果两个符号加上相同的补数,和的符号与加法的符号相反,或者两个符号减去相反的补数,如果差的符号和减数的符号相同,就属于运算结果的过程。 这种判别方法很复杂,需要区分两种不同的运算状况是加还是减,并检查结果的符号是否与任意一个操作数的符号相同,所以很少使用;

) 2个补数进行加法减法运算时,如果从最高位发送到符号位的进位值与从符号位发送到最高位的进位值不同,运算结果就会溢出。

)3)二符号位)例如定点小数的模式4补数)进行运算时,两个符号位的所得值不同(01或10 )是溢出。 01两个正数相加的结果,大于机器能表示的最大正数,称为“溢出”; 10表示两个负数相加,结果小于机器能表达的最小负数,称为“下溢”; 双重码比特的高阶码比特,无论结果是否溢出,运算结果都是正确的码比特,该结论在乘法运算过程中非常实用。 另外,在使用2符号位的方式中,在寄存器和内部存储器存储数据时,只要存储1位的符号即可,2符号位仅在加法器的线部分中使用。

再次强调,这三种不同的说法是对同一事实的细微差别的表现,可以区分目前使用的线路,但问题的本质是完全一样的。 请参阅[X]增补[Y]增补的运算情况:

01011 10101 10100

01000 11000 11001

 

10011 101101 101101

(1)2) (3) )。

10111 001011 110111

10101 001000 110101

 

101000 010011 1101100

(4) (5) )6)。

这都是溢出情况,前四个使用一个符号位,后两个使用两个符号位。 你可以用前面提到的任何一种表达方式来说明这里的溢出。 例如,关于1 ),从正到正的负进位,或者从数据位到符号位的进位值为1,与此相对,从符号位到更高位的进位值为0,或者5 )中使用了2符号位方案时

如果补数加减运算的结果不符合上述情况,则结果的符号比特和数值比特正确,而不是溢出。 这里讨论的是加法,但减法也适用。 正负与正负相同,正负与正负相同,如上所述,负运算也通过加法器进行。 例如:

01011 11101 001011 111101

00100 11010 000100 111010

01111101110011111111111110111

(1)2)3)4) )。

(1)、(2)使用一个已编码比特,(3)、(4)使用两个已编码比特,并且已编码比特向上舍入至更高一位,无论其值是0还是1,都在取模之后丢弃。

有了上述说明,图2.5的逻辑电路可以进行二补数的加减法运算。

运算前,x、y寄存器分别存储加法/减法和加法/减法,计算结果存储在x寄存器中; f是加法器,在指令XF和YF的信号控制下接收两个寄存器的数据完成加法运算,运算结果可以在FX指令信号的控制下接收到x寄存器。

为了实现减法运算,需要将y寄存器的补数数据的负数的表示发送给加法器f。 这可以通过发送y寄存器各数据的反转代码,向f的最低位提供进位1的输入信号,从而灵活地进行,可以通过/YF和1F的控制指令实现。

图2.5实现补数加减运算的逻辑电路

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。