计算机组成原理之运算方法与运算器
1.定点数运算及溢出检测
1)基础知识,原码与补码相互转化:
2)定点数加法
举例:
3)定点数减法
将减法转化为加法:
4)数据溢出
由于第一位数,可能会因为数据溢出,被取模运算丢掉,所以造成计算错误。如下两个例子,第一个例子中,每一步计算都是正确的,但是两个正数之和为负数,两个负数之和为正数。
5)溢出监测的三种方法:
问题出现的前提: 溢出只可能发生在同符号数相加时,包括[X] 补 与[Y] 补 ; [X] 补 与[-Y]同号;
(1) 方法1:对操作数和运算结果的符号位进行检测:当结果的符号位与操作数的符号不相同时就表明发生了溢出;(设X0 ,Y0 为参加运算数的符号位, S0 为结果的符号位)
(2)方法2:对最高数据位进位和符号进位进行检测
(3)方法3:用变型补码。用两位数作为符号位
5)无符号数运算的溢出判断:无符号数加法的溢出可用ALU的进位表示;无符号数减法的溢出也可用带加/减功能的ALU的进位取反后表示。
2 定点数补码加、减运算器设计
1)四位串行加法器的设计(基于一位全加器FA)
带溢出检测功能的加/减运算器:
串行进位的运算速度比较慢:
根据公式,将串行改为并行:
多位串行与并行
3 原码一位乘法
逻辑左移和算术左移是一样的;
右移的情况就不一样了: