CF是无符号数溢出标志,OF是有符号数溢出标志。
通俗一点说就是,即使有符号数相加/相减导致了CF=1也没什么意义,不能说明结果的正确与否。此时,OF=1,
则说明结果溢出,出现错误;OF=0,说明结果正确。这个过程根本和CF没关系,CF=1/0,都不会影响。同理也
可以得出OF对无符号数也无影响。
方法一:根据表达式
OF=Cn异或Cn-1
Cn表示第n位的进位
CF=Cout异或Cin
Cin等价于Sub的选择控制,为1时表示做减法
加法时,CF为1表示有进位;减法时,CF取反为1表示有借位
方法二:人为相加
判定CF时,把两者当成无符号数,看是否进位
判定OF时,把两者当成有符号数,看是否进位或借位
用下边这俩做题
判断OF
OF=Cn^Cn-1
Cn表示第n位是否发生进位,如是,则为1,否则为0
这里的第n位指的是机器数的最高位,第n-1位就是次高位
判断CF(人为操作)
把机器数都当作无符号数来进行加减法
两数相加时,如果最高位有进位,则CF=1,否则为0
两数相减时,如果被减数最高位有借位,则CF=1,否则为0
博客介绍了无符号数溢出标志CF和有符号数溢出标志OF。指出有符号数运算中OF决定结果是否溢出,与CF无关,反之亦然。还给出两种判定方法,一是根据表达式,二是人为相加,分别说明了判定CF和OF的具体操作。
9367

被折叠的 条评论
为什么被折叠?



