计算机组成原理,浮点数阶码运算.个人笔记

IEEE浮点数

IEEE浮点数的组成

1 10000011 1001001000000000000000
第一位为符号位,1表示负数,0表示正数
第2~9位共8位为阶码,
阶码是由阶码真值加上01111111(127)形成的
第10~32共23位为尾数
尾数前面省略了一个1,因此真实的尾数前面应该多一个1,这是IEEE浮点数规矩

因此该数表示的真实的数是 -201000000*1.1001001000000000000000

IEEE浮点数的加减法,以阶码为3为,尾数为6为举例

X = 2-011 * 0.100101 Y = 2-010 *(-0.011110)
X = 11101 00.100101

第一步对阶,小阶对大阶

可以看到Y的尾数小数点前后都是0,不符合规格化浮点数的定义
因此对Y进行规格化,对Y进行左移,阶码减一
Y = 2-011 *(-0.111100)
Y = 11101 11.000100
可以看到X和Y是同阶的,因此不需要对阶

第二步加减

加:X+Y = 00.100101 + 11.000100 = 11.101001
减:X -Y = 00.100101 + 00.111100 = 01.100001
00.111100是Y的尾数的负数的补码

第三步.规格化处理

正数的反码补码和原码相同
只有负数才需要对补码和反码进行处理
规格化的六种情况
尾数用双符号位表示运算后的结果有下面6种情况
①:00.1XX…X

②:11.0XX…X

③00.0XX…X

④11.1XX…X

⑤01.XXX…X

⑥10.XXX…X

①②两种情况符合规格化浮点数的定义

③④两种情况不是规格化数,需要使尾数左移实现规格化,尾数每左移一次,阶码需要减1

⑤⑥这两种情况在定点加减运算种成为溢出,但在浮点加减运算中只表明此时尾数的绝对值大于1,而非真正的溢出,这种情况应将尾数右移实现规格化,尾数每右移一位,阶码响应加1

加:X+Y = 00.100101 + 11.000100 = 11.101001
可以看到小数点前后相同,因此需要左移一次,成为11.010010,然后阶码减一

结果为== 11100 11.010010==

减:X -Y = 00.100101 + 00.111100 = 01.100001
可以看到符号位两位不同,结果应该是溢出了,因此需要右移一次,阶码加一
结果为11110 00.110000(1)

第四步,舍入处理

X+Y:11100 11.010010无需进行舍入处理,转换为原码后结果为2-100*(-0.101110)

X-Y:11110 00.110000(1) 按照0舍1入的原则.结果为== 2-010*(0.110000)==

第五步,溢出判断

如果右规后,仍然不符合规格化浮点数的定义,说明此时运算结果溢出
当[Ec] =01,XXX…X,表示上溢.此时,浮点数真正溢出,机器需停止运算,做溢出中断处理
当[Ec]=10,XXX…X,表示下溢.浮点数值趋于0,机器不做溢出处理,而是按机器0处理

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值