C语言中int与float同样都是4个字节为什么取值范围不同?
的有关信息介绍如下:
简单的讲,int存整数,各数之间相差固定为1,不指明无符号的前提下 32位有个符号位,剩下的表示一个31位的2进制数(这个不固定,也会有int16,int64,根据实际情况)基本就是±2的n-1次方为范围。
float(单精度浮点数)虽然同样用4字节32位存储,但它各数间距并不固定,所以叫浮点型。简单讲离0越远精度越低,在存储上分为符号位(1),指数位(8),位数位(23)三个部分,尾数有个进位前导(隐约记得应该是底层硬件原因)所以取值是1.0-2.0,指数位最大值是127,表示数的形式理解成科学计数法±1.b(尾数位)×2的c次方(指数位-127),所以取值范围就到±3.4028235E38(极致值1.111…(23个1)*2的127次方)这么大了。



