关于进位有符号数运算问题
两个数相减,00000001-00000010就是1-2,这样的两个数在计算机里做运算,,计算机是不知道我会把这两个数是当成有符号还是无符号的吧??那进行运算的时候会去CF借位来运算吗??这真正运算的结果是否是11111111??11111111这个如果是用补码表示的话就是表示-1,,那跟有去CF借位来算结果不是一样的吗???楼主的问题略显混乱。一下是我的一点见解:
1、寄存器在加减的时候应该不会像CF借位,因为从来都是运算结果影响标志寄存器,而不是标志寄存器参与运算。
2、楼主应当考虑的是SF(Sign Flag)符号标志位,正的话为0
CF(Carry Flag)是进位标志位,用以查看两者相加的时候是否进位
3、CPU在运算的时候将减法当成加上负数,正负数换算成补码的形式。正数形式不变 负数反码加一(甲鱼老师有一个专门讲补码的,建议看一下。http://blog.fishc.com/442.html)。 楼上说的没错。
00000001-00000010寄存器中结果是补码 11111111,CF,SF被置为1
sub 影响CF,但CF不会参与运算。
sbb带借位的减法,CF参与运算。
页:
[1]