在C/C++中float是32位的,double是64位的,两者在内存中的存储方式和能够表示的精度均不同,目前C/C++编译器标准都遵照IEEE制定的浮点数表示法来进行float,double运算。
无论是float还是double,在内存中的存储主要分成三部分,分别是:
(1)符号位(Sign):0代表正数,1代表负数
(2)指数位(Exponent):用于存储科学计数法中的指数部分,并且采用移位存储(127+指数)的二进制方式。
(3)尾数位(Mantissa):用于存储尾数部分
单精度是这样的格式,1位符号,8位指数,23位小数。
对于float类型,他的指数部分有8bit,可以表示-127~128,其中有一位符号位。
双精度是1位符号,11位指数,52位小数。