文章目录
- PC_溢出概念+判断方法+示例
- ref
- 分类
- 定点计算机中的溢出
-
- 在浮点计算机中的溢出
-
- 溢出简易判断规律
- 溢出的必要条件
- 定点数🎈补码运算判断溢出方法
- 用一位符号位判断溢出
-
- 双符号位:变形补码判断溢出
-
- 采用一位符号位并根据最高数据位进位情况判断
PC_溢出概念+判断方法+示例
- 算术溢出(arithmetic overflow)是指计算机进行算术运算产生的结果超出机器所能表示的范围。
ref
- 计组_浮点数表示/定点数和浮点数比较/溢出_xuchaoxin1375的博客-CSDN博客_浮点数的补码怎么算
分类
-
根据溢出方向:
-
上溢
-
下溢
-
在浮点机中可以进一步分为:
-
正上溢
-
负上溢
-
正下溢
-
负下溢
-
正下溢和负下溢是连在一起的区间(是0的去心邻域)
- 浮点数可以表达0,但是可能表示不了不等于但是很接近0的数
-
根据小数点类型:
定点计算机中的溢出
- 从正方向超过了数的表示范围,称为上溢;
- 从负方向超过了数的表示范围,则称为下溢。
定点机溢出示意图
在浮点计算机中的溢出
-
浮点数的表示范围主要由阶码来决定。(尾数决定的是精度)
-
不论数的符号是正还是负,若阶码从正的方向超出了阶码的表示范围,称为上溢;
-
若阶码从负的方向超出阶码的表示范围,或者尾数为“0”时,统称为下溢。
浮点机溢出示意图
溢出简易判断规律
溢出的必要条件
- 仅当两个符号相同的数相加或两个符号相异的数相减才可能产生溢出
-
上面两种情况才有可能引发进位
-
口诀:同号加,异号减,进位
是发生溢出的必要条件
定点数🎈补码运算判断溢出方法
用一位符号位判断溢出
例
- 下面以机器字长为4位(含1位符号位)为例,说明机器是如何判断溢出的。
例
上例化为十进制时,真值运算表示(
−
1
2
+
(
−
1
2
)
)
=
−
1
-\frac{1}{2}+(-\frac{1}{2}))=-1
−21+(−21))=−1
由
[
A
+
B
]
补码
[A+B]_{补码}
[A+B]补码= 1.0000,而且对应的真值:A + B= - 1,由此可见,用补码表示定点小数时
,它能表示–1的值。
- 计算机中采用1位符号位判断时,为了节省时间,通常用
符号位产生的进位
与最高有效位产生的进位
异或操作后,按其结果进行判断。 - (若异或结果为1 ,即为溢出;异或结果为0,则无溢出。
- 例6.12中符号位有进位(1),最高有效位无进位(0),即
1
⊕
0
=
1
1\oplus 0 = 1
1⊕0=1,故溢出。
- 例6.13中符号位有进位(1),最高有效位也有进位(1),即
1
⊕
1
=
0
1\oplus1=0
1⊕1=0,故无溢出。
双符号位:变形补码判断溢出
-
变形补码
,
又称为模
4
补码
(
m
o
d
4
)
双符号位的补码小数定义为
:
D
C
(
x
)
=
[
x
]
补
=
{
x
,
0
⩽
x
<
1
4
+
x
=
4
−
∣
x
∣
,
−
1
⩽
x
<
0
(
m
o
d
4
)
模
4
补码双符号位中
:
00
表示正
,
11
表示负
用在
A
L
U
中
变形补码,又称为模4补码(\mod 4) \\双符号位的补码小数定义为: \\ DC(x)=[x]_补= \begin{cases} x,&0\leqslant{x}<1 \\4+x=4-|x|,&-1\leqslant{x}<0 \end{cases} (\mod{4}) \\ 模4补码双符号位中:00表示正,11表示负 \\用在ALU中
变形补码,又称为模4补码(mod4)双符号位的补码小数定义为:DC(x)=[x]补={x,4+x=4−∣x∣,0⩽x<1−1⩽x<0(mod4)模4补码双符号位中:00表示正,11表示负用在ALU中
例
- 此时,符号位为“01”,表示溢出,又因第1位符号位为“0”,表示结果的真正符号为正,故“01”表示
正溢出
。
例
- 符号位为“10”,表示溢出。由于第1位符号位为1 ,则表示负溢出。
上述结论对于整数也同样适用。 - 在浮点机中,当
阶码
用两位符号位
表示时,判断溢出的原则与小数的完全相同。
硬件实际情况
- 采用双符号位方案时,寄存器和主存中的操作数符号仍然只需要保留一位
- 关键在于加法器中的符号位是两位
- 在相加时,寄存器中的操作数的一位符号值
X
s
X_s
Xs需要同时传送到加法器的两位符号位的输入端即可
采用一位符号位并根据最高数据位进位情况判断
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)