我又来了,第二篇博客fighting,接着第一篇,这里讨论一下C/C++中float & double类型数据在内存中的存储方式,还是那句话如果有侵权,请联系删除,如果有错误,也欢迎大家指正,谢谢
IEEE规定
IEEE规定float & double类型的数据用三元组{S, E, M}表示,"S"用0和1分别表示正数和负数,尾数"M"用原码表示,阶码"E"用移码表示,还规定尾数域的最高有效位总是1,并且最高位不予存储(都是1也就不用浪费存储空间了)
float类型
单精度浮点数float(32bit)表示为:
SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
- 符号位(S)1 bit;
- 阶码(E)8 bit,阶码的偏移量为127(7FH);
- 尾数(M)23 bit,用小数表示,小数点放在尾数域的最前面.
所以 32bit 的单精度浮点数可表示为:
double类型
双精度浮点数double(64bit)表示为:
SEEE EEEE EEEE MMMM MMMM MMMM MMMM MMMM MMMM MMMM MMMM MMMM MMMM MMMM MMMM MMMM
- 符号位(S)1 bit;
- 阶码(E)11 bi