查缺补漏----加法器以及标志位

加法器的结构:

OF(溢出标志位),SF(符号标志位),ZF(0标志位),ZF(进位/借位标志位)

有符号数看标志位:OF,SF

无符号数看标志位:CF

有符号数,无符号数的符号看:ZF

关于OF的判断

① 从逻辑上判断,直接将题目给的数进行相加,相减手算:如果正+正=负,负+负=正那么OF=1

② 对于双符号位,即最高位\oplus次高位=1,则OF=1

③ 看最高位与次高位的进位:Cn+Cn-1=1,则OF=1

关于SF的判断:看有符号数计算结果的最高位,最高位为1(负),SF=1,最高位为0,SF=0

关于ZF的判断:看结果是否为0

关于ZF的判断:看Cin\oplusCout,也就是看Sub\oplusCout

ZF仅对无符号数起作用,如果是减法,则表示借位,如果是加法,则表示进位。

这里的Sub在加法器中很关键:

加法时,Sub=0,减法时Sub=1

在加法中,结果用上图表示:X+Y+Sub=X+Y+0

在减法中,结果用上图表示:X+(-Y)+Sub=X+(-Y)+1,也就是我们常说的将[Y]补=[-Y]补,各位取反,末位加1

回来看这个式子:Cin\oplusCout=Sub\oplusCout

① 若是加法,则Sub=0,两个无符号数相加,结果溢出,则CF=1

② 若是减法,则Sub=1,两个无符号数相减,即X-Y=X+[-Y],若最高位的进位为0,则CF=1

注:无论是有符号数,还是无符号数,计算机是不知道的,所有的数都是通过同一个部件进行计算的,最后是正是负,结果是否溢出,都是都是人为的通过标志位的逻辑表达式或其计算的结果判断的。

接下来看看怎么通过逻辑表达式得到计算结果:

设A的符号为A_{s},B的符号为B_{s},运算结果的符号为S_{s}

OF:

对于加法运算 A+B→S,若 A、B为负,且S为正,则说明发生溢出;或者,若 A、B 为正,且S为负,也说明发生溢出。

正+正=负---A0 B0 S1

负+负=正---A1 B1 S0

表达式:\bar{A}\bar{B}S+AB\bar{S}

对于减法运算 A-B→S,若 A为负、B为正,且F为正,则说明发生溢出;或者,若 A为正、B为负,且F为负,也说明发生溢出。

正+正=正-(-正)=正-负=负---A0 B1 S1

负-(-负)=负-正=正---A1 B0 S0

表达式:\bar{A}BS+A\bar{B}\bar{S}

SF:看运算结果的符号即可,SF=S

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值