标志位加法器中四个标志位OF,SF,ZF,CF的判断

在计算机组成原理学习标志位加法器时对OF为什么是Cn异或Cn-1有疑问,解决后记录一下

标志位加法器的图和一些符号解释

标志位加法器就是在并行加法器的基础上添加了一些标志位

Cn是表示是否进位

Sn是一位加法器计算出来的结果

An Bn是被加数本位和加数本位

四个标志位分别表示什么

 1. OF(溢出标志):反映带符号数加减运算是否溢出
 2. SF(符号标志):反映带符号数加减运算的正负
 3. ZF(零标志):反映运算结果是否为0
 4. CF(进位/借位标志):反映无符号数加减运算是否溢出

四个标志位的判断过程

OF

  • OF溢出标志,用于判断带符号数加减运算是否溢出。OF=1 溢出;OF=0 未溢出
    • 两异号数相加或两同号数相减绝不会产生溢出 (两同号相减也可以变为两异号相加)
    • 只有两同号数相加或两异号数相减时才有可能产生溢出,符号位改变则溢出
    • 通过上述推出
      • 符号位相同的情况
        • 如果最高位的进位Cn=1,这种情况只能是两个符号位都为1
          • 当Cn-1 = 1时,向前进位后符号位变为1,所以未溢出
          • 当Cn-1 = 0是,符号位为0,符号相反,所以溢出
        • 如果次高位的进位Cn-1=1
          • 当Cn=0时,说明两个符号位都为0,则次高位进位加上后,符号位变为1,相反,则溢出
          • 当Cn=1时,说明两符号位都为1,则次高位进位加上后,符号位还为1,相同,未溢出
      • 符号位相反的情况
        • 溢出是指运算结果超过了机器数能表示的范围。(结果应为正,结果变负)
        • 如果符号位相反的情况相加,假设这台机器的范围是(-127~128),就算负数是-127,加上一个正数,永远不可能超出范围,所以两异号相加不可能溢出
        • 如果最高位的进位Cn=1,则次高位进位Cn-1 = 1
        • 如果次高位的进位Cn-1 = 1,则最高位进位Cn=1
        • 如果最高位的进位Cn=0,则次高位的进位Cn-1 = 0
        • 如果次高位的进位Cn-1=0,则最高位进位Cn=0
        • 这些情况全部未溢出
      • 整合上面两种情况可以发现OF = Cn异或Cn-1

SF

  • SF符号标志,用于判断带符号数加减运算结果的正负。 SF=1 结果为负; SF=0 结果为正
    • 取nbit补码的最高位即为正负,SF=Sn

ZF 

  • ZF零标志,用于判断加减运算结果是否为0。 ZF=1 结果为0 ZF=0 结果不为0
    • nbit补码的所有位全为0,即ZF=Sn+······S2+S1

CF

  • CF进位/借位标志,用于判断无符号数加减运算是否溢出。CF=1 溢出;CF=0 未溢出
    • 如果两无符号数相加,最高位进位为1(即有进位)则溢出
    • 如果两无符号数相减,最高位借位为1(即有借位)则溢出
    • 也就是CF = Cn异或C0

 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值