c语言中,float变量能存的最大数是?

float变量能存的最大数是?还有对这些数值解释下,为什么是这样?然后它在内存中的存储形式是怎样的?谢谢各位大虾。
float的一般数(比如:12.5等等)在内存中的形式我知道,所以不要给我一般数的答案,谢谢。补充一点就是:推出float的最大数在内存中的存储是怎样的,要过程,(对了这里的float是有符号的)。

c语言中,float占4个字节,每位字节占8位,所以最大数应该是2^32-1;变量的储存形式就应该是占着内存,就是一个空间
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-12
确实如同楼上所说,float变量是单精度浮点型,在计算机中是分配了4个字节(byte)的内存,其中每个内存是8位(bit),而每一位的存储形式都是0/1,因此一共是32位的,故其范围为3.8e-38~3.8e+38
下面是借鉴大神的回答:

种类-------符号位-------------指数位----------------尾数位----
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

本回答被网友采纳
第2个回答  2013-01-12
2^32-1
float变量是单精度浮点型占4个字节,每位字节占8位
变量的储存实质是空间,即内存
第3个回答  2013-01-12
追问

我要的不是float型变量的一般值在内存中的存储形式(这一点我知道是怎么样的),而是float型的最大数,最大数在内存中的形式。谢谢

追答

float一共32位,其结构定义如下:
|-------- 31 -------|------------ 30-23 ------------ |------------ 22-0 ------------|
符号位(sign) 指数部分(exp) 小数部分(mag)
sign:符号位就一位,0表示正数,1表示负数
exp: 指数部分,无符号正数
mag:小数部分,定点小数,小数点在最左边。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网