补码加减运算器


\quad

一. 补码加减运算器

\quad

在这里插入图片描述
以上是4bit+4bit的加法器
如果要进行8bit+8bit就可以在左边再连一个加法器

\quad
\quad

补码减法的实现

在这里插入图片描述
Sub为控制信号, 当要进行加法运算的时候就给多路选择器0, 反之给1
同样的,要进行加法,Sub给Cin的值为0, 减法时给1(按位取反后加的1就是在这里加的)

当多路选择器是0的话, 就是进行补码加法运算, 和上面一样

当多路选择器是1的话, 就是进行补码减法运算, 我们可以看到多路选择器的左边是非门, 将Y全部位按位取反, 之后再加来自Cin的1, 再与x进行加法运算

在这里插入图片描述
错误的原因是产生溢出

在这里插入图片描述

在这里插入图片描述
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一

在这里插入图片描述
D是十进制的后缀
我们发现同样可以使用的加法器, 但是计算结果却是错的, 这就涉及到标志位的生成

\quad

二. 溢出判断

\quad

在这里插入图片描述
也就是说(同+同=异)就会发生溢出
\quad
\quad
在这里插入图片描述

在这里插入图片描述
其实正+正结果应该为正的, 而实际得出的却是负的则为上溢

产生溢出的原因是位数不够, 那么我们应该如何增加位数呢
\quad
\quad
整数的扩展方式
在这里插入图片描述
\quad
\quad
小数的扩展方式
在这里插入图片描述
把短数据变成长数据, 所能表示的范围和数值的精度都会有所扩展, 在一定程度上可以避免溢出

\quad

三. 标志位的生成

\quad

在这里插入图片描述
两个nbit相加除了输出nbit的结果之外, 还输出4个标志位
我们分别来看这4个标志位

\quad

我们先来看OF标志位

在这里插入图片描述

OF标志位是用来判断有符号数的加减有没有产生溢出, 有溢出OF=1, 无溢出OF=0
在这里插入图片描述
特别注意的是OF对无符号数的加减法没有意义, 即使是OF=1, 也并不能说明它溢出
\quad
\quad

SF标志位

在这里插入图片描述
在这里插入图片描述
SF=1 运算结果为负数

在这里插入图片描述
SF=0 运算结果为正数

\quad
\quad

ZF标志位 (对有符号数还是无符号数都是有意义的)

在这里插入图片描述
当运算的结果nbit都是0的话, 那么结果就为0, ZF=1

\quad
\quad

CF标志位 (只对无符号数加减法有意义)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

\quad

在这里插入图片描述
特别注意:
OF和SF对应有符号数
CF对应无符号数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值