在开始试验之前我们先了解几个问题:
什么是运算溢出?
溢出: 算数运算产生的结果超过计算机运算器所能表示数的范围
例: 8位运算器表示的数(有符号数)范围:-128~127, 若要计算:88+88 = 176 > 127 ,超过8位运算器所能表示数的范围,产生溢出。
发生溢出情况: 两同号数运算
溢出检测方式:
1. 单符号位法: 加数与被加数符号相同,结果符号位不同
2.双符号位法: 操作数运算时采用双符号位,正数00,负数11,双符号位一起参与运算,若运算结果两符号位相同---不溢出,两符号不同-----溢出
溢出逻辑为: Sf1⊕Sf2
在微型机中,使用双高位来判别有符号数加、减运算是否溢出。
正式开始试验:
本电路旨在实现 : 8位有符号数相加减, 采用双高位判断是否发生溢出,并设立Control控制执行加法还是减法(Control端为1执行减法)
原理:
加法原理略过
减法原理: 两数(补码形式)相减,可化为,被减数+减数求补(求补: 包括符号位按位取反,末尾加一)
本电路当控制端为1时,通过异或门实现减数的按位取反,并通过控制端进位实现末尾加一