1.浮点数的表示形式
浮点数的表现分为两个部分,阶码和尾数。(可通过科学计数法的形式去理解)可通过下面的公式进行表示。
其一般格式的存储形式如下图所示:
2.规格化浮点数
规格化浮点数涉及到两种操作:左规、右规;左规是对乘以2;右规是除以2(针对二进制数值);同样可以以十进制的方式去理解,就是小数点的左移跟右移操作。
【注】这里的规格化是对尾数一种标准化的过程,方便计算机对数值进行操作的过程。不同标准化的结果有一定差异。
(1)原码规格化
正数为0.1xxxxx x的形式,其表示的最大值为0.111 1,最小值为0.100 0。
尾数的表示范围为 。
负数为1.1xxxx x的形式,其表示的最大值为1.100 0,最小值为1.11 1.
尾数的表示范围为 。
(2)补码规格化
正数为0.1xxxxx x的形式,其表示的最大值为0.111 1,最小值为0.100 0。
尾数的表示范围为 。
负数为1.0xxxxx x的形式,其表示的最大值为1.01 1,最小值为1.00 0。
尾数的表示范围为 。
例如:[-1/2]补 = 1.1000,此时这个就不是一个规格化的数,需要左规一次,变成1.000才是规格数。
3.IEEE754标准
IEEE754标准是将浮点数分为三个部分,数符(整个数的符号)、阶码、尾数。
其中阶码E=阶码真值+127。尾数文字表示是1.M。
其各种精度的表示形式可如下表所示:
下面结合一个单精度的例子来理解:用IEEE754标准表示 -0.4375
首先确定负数,则数符位 为 1;
0.4375 = 0111 = ,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,即.
最大值为:E = 254 ,M = 1.1111 ,即
另外浮点数加减法运算的步骤如下:1.对阶;2.尾数求和;3.规格化;4.舍入;5.溢出判断;
1.对阶;是将阶码对为一样即小阶向大阶对齐原则。通过右规的方式;
2.尾数求和:对尾数进行定点加减;
3.规格化:如标题2所示;
4.舍入:有两种方法:“0”舍“1”入法和恒置“1”法(类似十进制里头的舍四进五)。应用于对阶和右规的过程中。
5.溢出判断:浮点数的溢出与否是由阶码的符号决定的。以双符号位为例,当阶码的符号位出现“01”时,表示阶码大于最大阶码时,表示上溢,进入中断处理。当阶码的符号位出现“10”时,表示下溢,即阶码小于最小阶码时,按机器零处理。
【总结】此文主要是介绍浮点数的内容,对IEEE754标准作出简单的介绍。参考书籍“王道计算机组成原理”。