目录
一、浮点数类型
浮点数类型 | 字节长度 |
float | 4 |
double | 8 |
二、浮点数的国际标准
根据国际标准IEEE(电气和电子工程协会) 754,任意一个二进制浮点数V可以表示成下面的形式: (-1)^S * M * 2^E,其中 (-1)^s表示符号位,当s=0,V为正数;当s=1,V为负数。 M表示有效数字,大于等于1,小于2。 2^E表示指数位。
三、浮点数的储存方式
1.那么这个国际标准是什么意思呢?
我们可以知道每一个浮点数可以用:(-1)^S * M * 2^E表示;
S区表示符号位:1为正,0为负;
M区表示有效位:数值的具体数值,用科学计数法表示;
E区表示指数位:最后的有效位的数值再乘上指数位的次方就是该浮点数发数值;
double型和float型的类似
2.关于M位和E位的特殊规定
M区:由于数值在内存中都是以二进制的进行储存的,所以数据用科学计数法表示时,最高位a一定是 1 < a < 2 的,所以其最高位一定是1,即在进行储存时可以将其省略,最好计算时再加上去即可。所以规定,M位在储存数据时,是舍弃了小数点前面的一的。
E区:在:(-1)^S * M * 2^E这样的表示中,S是符号位,E区没有符号位(E区是无符号数),但是在浮点数中,我们需要出现负指数的情况,所以规定在表示指数时,在指数原有的基础上float:加上127(double:加上1023),在进行计算时再减去127或者1023得到原来的指数;
3.浮点数无穷小和无穷大的概念
当E区全为0时,M区计算时不再加上原来的1,而是加上0进行计算,相当于是0.000(二进制)几的2^(-127),非常接近于0了,因此就相当于无穷小;
当E区全为1时,,M区为0时,就相当于无穷大;