黑马程序员技术交流社区

标题: float的取值范围 [打印本页]

作者: 王康达    时间: 2015-11-29 23:15
标题: float的取值范围
——关于float(4字节)的取值范围由来(-3.40E+38 ~ +3.40E+38)问题?
【float取值范围计算】
S EEEEEEEE PPPPPPPPPPPPPPPPPPPPPPP

表示的范围是:-(2^(2^(8-1)-1))*2~~~~(2^(2^(8-1)-1))*2 而(2^(2^(8-1)-1))*2化简之后其实就是(2^(2^7))用计算器计算得到:3.402824e38.

1.关于2^(2^(8-1)-1): 其实就是 EEEEEEEE 部分!(下面是拓展部分,你看了就知道)
 (1)浮点数使用 IEEE(电气和电子工程师协会)格式。浮点类型的单精度值具有 4 个字节,包括一个符号位、一个 8 位 excess-127 二进制指数和一个 23 位尾数。
 (2)【8位excess-127 二进制指数——阶码位】
         1).Excess系统是计算机中可以同时存储正数和负数的一种方法。在这个系统中,数很容易从十进制转换成二进制,反之亦然。但是,在数上进行运算很复杂。现在对他仅有的应用,就是用来存储小数的指数值。
         2).在Excess系统中,正数被称为幻数用于数据转换过程。幻数通常是(2^(n-1))或(2^(n-1)-1),这里,n是存储单元的位数。
例如:excess-127就是表示存储单元的位数n=8的情况下,而幻数为(2^(n-1)-1)!2的7次方减1得127!
  (3)利用上面的知识,可知 EEEEEEEE 表示的数值范围为:2^(幻数),幻数=(2^(n-1)-1)因为是excess-127,储存单元数为8!
          即是2^(2^(8-1)-1)!
2.乘以2又是怎么回事?
           (2^(2^(8-1)-1))*2 是何原理机制,求指教,感谢!
作者: 王康达    时间: 2015-11-30 22:05
怎么没人评论
作者: ff123456    时间: 2015-12-1 17:31
大神,带我装逼带我飞!~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2