为了账号安全,请及时绑定邮箱和手机立即绑定

——关于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 是何原理机制,求指教,感谢!


正在回答

1 回答

太深奥了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

——关于float(4字节)的取值范围由来(-3.40E+38 ~ +3.40E+38)问题?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信