float变量能存的最大数是?还有对这些数值解释下,为什么是这样?然后它在内存中的存储形式是怎样的?谢谢各位大虾。
float的一般数(比如:12.5等等)在内存中的形式我知道,所以不要给我一般数的答案,谢谢。补充一点就是:推出float的最大数在内存中的存储是怎样的,要过程,(对了这里的float是有符号的)。
下面是借鉴大神的回答:
种类-------符号位-------------指数位----------------尾数位----
float---第31位(占1bit)---第30-23位(占8bit)----第22-0位(占23bit)
根据LZ的追问
S(符号位) E(指数位) M(尾数位)
0 1111 1111 111 1111 1111 1111 1111 1111
写成4bit一间隔形式
0111 1111 1111 1111 1111 1111 1111 1111追问
你有试过反推回3.4*10^38吗?没有就试下,我推不回去这个数3.4*10^38
追答(1+1/2+1/4+1/8+...)(尾数位表示的数,二进制为1.11 1111 1111 1111 1111 1111,近似就是2)*(2^127)(指数位)=3.4*10^38,是这个道理吧,你看这个解释还行么?
追问你的这个解释有点牵强,你的那个127是怎么来的啊?
追答127的情况是这样的:由于指数位的情况么,为有符号型,这个就是(-128)~(+127)的节奏啊,顺便纠正下,
指数位不是2^127?
S(符号位) E(指数位) M(尾数位)
0 0111 1111 111 1111 1111 1111 1111 1111
float变量是单精度浮点型占4个字节,每位字节占8位
变量的储存实质是空间,即内存
我要的不是float型变量的一般值在内存中的存储形式(这一点我知道是怎么样的),而是float型的最大数,最大数在内存中的形式。谢谢
追答float一共32位,其结构定义如下:
|-------- 31 -------|------------ 30-23 ------------ |------------ 22-0 ------------|
符号位(sign) 指数部分(exp) 小数部分(mag)
sign:符号位就一位,0表示正数,1表示负数
exp: 指数部分,无符号正数
mag:小数部分,定点小数,小数点在最左边。