定点数运算以及溢出检测
-
定点数加法运算
-
[X]补+[Y]补=[X+Y]补 mod 2^(n+1)
-
关于mod的一些解释
-
mod"是数学中的取模运算,通常表示为符号"%",表示除数除以被除数后所得到的余数。
-
如果被除数 本身小于除数那么 得到的结果就是被除数本身
- 比如 11mod12=11
-
-
n表示有效位
-
-
例子
-
-
定点数减法运算
-
[X-Y]补=[X]补-[Y]补=[X]补+[-Y]补
-
如何求[-Y]补
- 1.按着原码和补码的关系求(比较繁琐)
- 2.扫描法
- 例子
-
例子
-
-
数溢出的概念和判断方法
-
概念
- 运算结果超出了某种数据类型的表示范围
-
检测的方法
-
溢出这可能发生在同符号数相加时,包括[X]补与[Y]补;[X]补与[-Y]同号;
-
方法1
-
对操作数和运算结果的符号位进行检测
- 当结果的符号位与操作数的符号不同时就表明发生了溢出
-
-
方法2
-
对最高数据位进位和符号进位进行检测
-
设运算时最高数据位产生的进位为C1,符号位产生的进位为C0
- 溢出检测电路为:V=C0⊕C1 ⊕表示异或运算 不同步则就是发生了溢出
-
-
-
方法3
-
用变形补码
- 双符号位
- [X]补=Xf1Xf2 X1 X2…Xn mod 2^(n+2)
- 溢出判断
- 例子
-
-
-
无符号数运算的溢出判断
- 无符号数加法的溢出可用ALU的进位表示
- 无符号数减法的溢出可用带有加/减功能的ALU的进位取反后表示
-