+ -
当前位置:首页 → 问答吧 → 减法运算,用二进制减法运算中最高有效位向高位的进位情况来判别;有进位时CF=0,无进位时CF=1。

减法运算,用二进制减法运算中最高有效位向高位的进位情况来判别;有进位时CF=0,无进位时CF=1。

时间:2011-03-26

来源:互联网

CF位说明无符号数相减的溢出,同时它又确实是被减数的最高有效位向高位的借位值勤。
减法的CF值反映无符号数运算中的借位情况,因此当作为无符号数运算时,若减数>被减数,此时有借位则CF=1,否则CF=0。

或者也可以简单地用二进制减法运算中最高有效位向高位的进位情况来判别;有进位时CF=0,无进位时CF=1。



后半部份我看不懂,“;有进位时CF=0,无进位时CF=1”。为什么是这样子?

作者: e3399   发布时间: 2011-03-26

据我了解,加法和减法影响CF位时都是有进位或借位时CF=1,无进位和借位时CF=0的

作者: pk20464475   发布时间: 2011-03-26

“也可以简单地用二进制减法运算中最高有效位向高位的进位情况来判别;有进位时CF=0,无进位时CF=1。”
这句话是那本书中说的? 

实际上,不论你程序中的数据是有符号还是无符号的,用sub相减时,它都是按无符号数去减得到结果和cf等,然后根据原来2个数的符号和结果的符号设置OF。所以CF本来和有符号数是没关系的。

我想你看到的这本书的作者应该是这样讲有符号数的减法的吧:
因a-b = a + (-b),所以对sub指令,可“化成”2步,先将减数求补,然后和被减数相加。如果是这样就出现了“相加有进位,则CF置0”的说法。

作者: shzhfu   发布时间: 2011-03-26

引用 2 楼 shzhfu 的回复:

“也可以简单地用二进制减法运算中最高有效位向高位的进位情况来判别;有进位时CF=0,无进位时CF=1。”
这句话是那本书中说的?

实际上,不论你程序中的数据是有符号还是无符号的,用sub相减时,它都是按无符号数去减得到结果和cf等,然后根据原来2个数的符号和结果的符号设置OF。所以CF本来和有符号数是没关系的。

我想你看到的这本书的作者应该是这样讲有符号数的减法的吧:
因a-b……

我这样理解对不对:相加有进位,则证明结果是正的,故CF为0.没进位,结果是负的,故CF为1.

作者: e3399   发布时间: 2011-03-26

热门下载

更多