浮点数规格化

1.浮点数的表示形式

        浮点数的表现分为两个部分,阶码和尾数。(可通过科学计数法的形式去理解)可通过下面的公式进行表示。

N=r^{E}\times M

        其一般格式的存储形式如下图所示:

2.规格化浮点数

        规格化浮点数涉及到两种操作:左规、右规;左规是对乘以2;右规是除以2(针对二进制数值);同样可以以十进制的方式去理解,就是小数点的左移跟右移操作。

【注】这里的规格化是对尾数一种标准化的过程,方便计算机对数值进行操作的过程。不同标准化的结果有一定差异。

(1)原码规格化

        正数为0.1xxxxx  x的形式,其表示的最大值为0.111   1,最小值为0.100    0。

尾数的表示范围为   \frac{1}{2}\leq M\leq (1-2^{-n})

        负数为1.1xxxx   x的形式,其表示的最大值为1.100  0,最小值为1.11   1.

尾数的表示范围为 -(1-2^{-n})\leq M\leq -\frac{1}{2}

(2)补码规格化

        正数为0.1xxxxx  x的形式,其表示的最大值为0.111   1,最小值为0.100    0。

尾数的表示范围为   \frac{1}{2}\leq M\leq (1-2^{-n})

        负数为1.0xxxxx x的形式,其表示的最大值为1.01  1,最小值为1.00    0。

尾数的表示范围为 -1\leq M \leq -(\frac{1}{2}+2^{-n}) 。

例如:[-1/2]补 = 1.1000,此时这个就不是一个规格化的数,需要左规一次,变成1.000才是规格数。

3.IEEE754标准

        IEEE754标准是将浮点数分为三个部分,数符(整个数的符号)、阶码、尾数。

其中阶码E=阶码真值+127。尾数文字表示是1.M。 

其各种精度的表示形式可如下表所示:

 下面结合一个单精度的例子来理解:用IEEE754标准表示  -0.4375

首先确定负数,则数符位 为 1;

 0.4375 = 0111 = 2^{-2}\times (1.11),0.4375的二进制表示和规格化表示后

所以尾数确定为M = 11000    0

阶码E = -2+127=125 = 011111101

则二进制表示为 1011 1110 1110 0000 0000 0000 0000 0000

用十六进制表示为 BEE0000.

【注】阶码的偏置值为127(而非128)。空出8全1来表示无穷大,此外阶码的范围为1~254,空出全0来表示非规格化的数

单精度的阶码最小值为:E = 1,M=0,即1.0\times2^{1-127} = 2^{-126}.

最大值为:E = 254 ,M = 1.1111  ,即1.1111 \times 2^{254-127} = 2^{127}\times(2-2^{-23})

另外浮点数加减法运算的步骤如下:1.对阶;2.尾数求和;3.规格化;4.舍入;5.溢出判断;

1.对阶;是将阶码对为一样即小阶向大阶对齐原则。通过右规的方式;

2.尾数求和:对尾数进行定点加减;

3.规格化:如标题2所示;

4.舍入:有两种方法:“0”舍“1”入法和恒置“1”法(类似十进制里头的舍四进五)。应用于对阶和右规的过程中。

5.溢出判断:浮点数的溢出与否是由阶码的符号决定的。以双符号位为例,当阶码的符号位出现“01”时,表示阶码大于最大阶码时,表示上溢,进入中断处理。当阶码的符号位出现“10”时,表示下溢,即阶码小于最小阶码时,按机器零处理。

【总结】此文主要是介绍浮点数的内容,对IEEE754标准作出简单的介绍。参考书籍“王道计算机组成原理”。

  • 25
    点赞
  • 174
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值