您的位置:首页 > 理论基础

浮点数float是如何在计算机里存储的?

2013-10-10 17:04 411 查看
  浮点数float是如何在计算机里存储的?

(1)浮点数,是指小数点在数据中的位置可以左右移动的数据。它通常被表示成:

    N = M* RE

  这里的M(Mantissa)被称为浮点数的尾数,R(Radix)被称为阶码的基数,E(Exponent)被称为阶的阶码。计算机中一般规定R为2、8或16、是一个确定的常数,不需要在浮点数中明确表示出来。因此,要表示浮点数,一是要给出尾数M的值,通常用定点小数形式表示,它决定了浮点数的表示精度,即可以给出的有效数字的位数。二是要给出阶码,通常用整数形式表示,它指出的是小数点在数据中的位置,决定了浮点数的表示范围。浮点数也要有符号位。在计算机中,浮点数通常被表示成如下格式:

|__Ms__|____E____|________M________|

      Ms是尾数的符号位,即浮点数的符号位,安排在最高一位;E 是阶码,紧跟在符号位之后,占用m位,含阶码的一位符号;

M 是尾数,在低位部分,占用n位。

      在 IEEE 标准中,浮点数是将特定长度的连续字节的所有二进制位分割为特定宽度的符号域,指数域和尾数域三个域,其中保存的值分别用于表示给定二进制浮点数中的符 号,指数和尾数。这样,通过尾数和可以调节的指数(所以称为"浮点")就可以表达给定的数值了。具体的格式参见下面的图例:



     在上面的图例中,第一个域为符号域。其中 0 表示数值为正数,而 1 则表示负数。第二个域为指数域,对应于我们之前介绍的二进制科学计数法中的指数部分。其中单精度数为 8 位,双精度数为 11 位。以单精度数为例,8 位的指数为可以表达 0 到 255 之间的 255 个指数值。但是,指数可以为正数,也可以为负数。为了处理负指数的情况,实际的指数值按要求需要加上一个偏差(Bias)值作为保存在指数域中的值,单精 度数的偏差值为 127,而双精度数的偏差值为
1023。比如,单精度的实际指数值 0 在指数域中将保存为 127;而保存在指数域中的 64 则表示实际的指数值 -63。 偏差的引入使得对于单精度数,实际可以表达的指数值的范围就变成 -127 到 128 之间(包含两端)。我们不久还将看到,实际的指数值 -127(保存为 全 0)以及 +128(保存为全 1)保留用作特殊值的处理。这样,实际可以表达的有效指数范围就在 -127 和 127 之间。 

(2)IEEE 754规定单精度浮点数float总共使用32位来存储,其中使用1位来表示符点数的符号,使用8位表示指数,使用23位来表示尾数,对于双精度浮点数double则使用64位来存储,符号位1位,指数位11位,尾数位52位,

其格式如下:

                符号位S:1表示负数,0表示正数

 

                
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: