计算机组成原理上溢01,计算机组成原理之浮点加减

进行浮点加减法运算时,需要完成操作数检查,对阶,尾数求和,结果规格化,舍入处理,溢出处理等步骤。

这里介绍几个概念:

双符号位:是检查计算机运算溢出的。是采用双符号位。00表示正号,11表示负号。

如果最高位进位讲导致符号位不一致。

结果的符号位有两种01和10.

结果的符号位为01时:为上溢

结果符号位为10时:为下溢

产生下溢的时候是接近0的时候被四舍五入为0的时候

产生上溢的时候是很大的数字被近似为正无穷或者负无穷。

比如这个例子:

例如设X = + 1000001,Y = + 1000011,采用双符号位表示X=00 1000001,Y=00 1000011,[X + Y]补=01 0000100,01运算结果产生了正溢出。

那么什么时候会产生溢出呢?

当两个同符号的数相加(或者是相异符号数相减)时,运算结果有可能产生溢出。常用的溢出检测机制主要有进位判决法和双符号位判决法。

再比如相异符号数相减时:

设x=0.1101,y=-0.0111,符号位为双符号位 ,用补码求x-y

[x-y]补=[x]补+[-y]补=00 1101+00 0111=01 0100 结果错误,正溢出

浮点数的常用表示方法:

N = R^E * M

N为浮点数,R为基底,E为阶码,M为尾数。

比如:

2为R,基底,010为E,阶码,0.11011011为M,尾数

浮点数加减法运算的时候均用补码形式。因为计算机内部都是采用补码形式。

变形补码。因为原码看不出来正数负数。

补码可以识别正数和负数。

这里采用的都是符号位两位,阶码双符号位,尾数双符号位。(上面说的)

1.对阶

就是把阶码小的转换为阶码大的。小阶向大阶看齐。

如1.1 * 2 ^ 3 和 1.2 * 2 ^ 4

就是把1.1*2^3,把尾数右移一位。阶码加1。

比如:

这里采用补码表示:

阶码双符号位表示:

[X]浮 = 00 010

[Y]浮 = 00 100

尾数双符号位表示:

[X]浮 = 00.11011011

Y的原码:11.10101100

Y的反码:11.01010011

Y的补码:11.01010100

[Y]浮 = 11.01010100

Y的阶码:

这里相减相当于加上负数

[-Y]原 = 11 100

[-Y]反 = 11 011

[-Y]补 = 11 100

我们把阶码对阶。就是E = Ex - Ey = 00010 + 11 100 = 11 110

把这个补码转换为原码得:11 010

即为-2

那么是X的阶码小,将X的尾数右移两位,X的阶码加2

所以[X]浮 = 00100,00.00110110(11)

2.尾数求和

如果是相减的化,相当于加上减数的相反数。就是把减数转化为对应的相反数的补码相加即可

3.规格化

分为右规和左规

两个符号位不同的时候右规。就是我上面说的情况除了00或者11其余是符号位不相同的情况。

即01 …和 10 …

以上两种情况将其右移。

即01…右移一位是001…

即10…右移一位是110…

然后阶码加1

两个符号位相同但是最高位的数值与符号位相同就是左规

两种情况就是111…和000…

111…左移1位的结果为11…0

000…左移1位的结果为00…0

然后阶码需要减去移动次数。

上述式子需要左规

左移1位阶码减1

变为:

1.00010101(10)

阶码减1

4.舍入

舍入有0舍1入法,恒舍法,置1法

比如上式采用0舍1入法

因为

最高位为1

需要入1

为:

如果需要被舍去的最高位为0,那么直接舍去就可以了

5.判断溢出

阶码的符号位为00或者01则不溢出

只需要判断阶码是否溢出即可,尾数不需要判断溢出。只是当前不是规格化数而已

判断阶码溢出方式上面已经提到

01为上溢。置溢出标致

10为下溢。置运算结果为0,阶码和尾数均为0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值