注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

编程学习

我的网上家园

 
 
 

日志

 
 

ZF CF OF SF 标志与两个数值比较大小的关系  

2013-05-09 09:36:33|  分类: 80x86汇编学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
两个数a b进行比较:
无论有符号数还是无符号数:   if (ZF==1) a=b;

无符号数比较:
if (ZF==0)
   if (CF==1) a<b;
   else a>b;
else a=b;

-----------------------------------------------
 if (ZF==0)
    if (CF==1) printf("a<b\n");
    else printf("a>b\n");
 else printf("a=b\n");

-----------------------------------------------  

有符号数比较:

ZF==0 则a b不相等.
当OF没有溢出的时候,SF反应的结果的正负就是实际我们要比较大小的正负
当OF溢出的时候,正好相反,SF表现的结果的正负正好是相反的

OF=0 SF=1 没有溢出,SF=1,所以a<b
OF=0 SF=0 没有溢出,SF=0,所以a>b

OF=1 SF=0 发生溢出,SF=0,结果是反的,所以a<b
OF=1 SF=1 发生溢出,SF=1,结果是反的,所以a>b

我们可以写成下面这样:
SF=1 OF=0 a<b
SF=0 OF=1 a<b
---------------------------
SF=1 OF=1 a>b
SF=0 OF=0 a>b

if (ZF==1) a=b;
else if ((SF ^ OF)==1) a<b;
     else a>b;
---------------------------------
if (ZF==1) a=b;
else if (SF<>OF) a<b;
      else a>b;
  评论这张
 
阅读(39)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017