浮点数内存存储结构:科学计数法
科学计数法表示实数:
十进制12345 = 1.2345*10^4
二进制
1011.01 = 1.01101*2^3 1.01101为尾数 3为指数 0为符号位
-0.010101 = -1.0101*2^-2 1.0101为尾数 -2为指数 1为符号位
在IEEE标准中,浮点数是将特定长度的连续字节(4个字节或者8个字节)的所有二进制位(32位和64位)分割为特定宽度的三个域。
符号数S 占1位 正数位0 负数为1
阶码域E 占8位或者11位E=e+127(float)或者E+1023(double) 指数e有正负既有符号数,但阶码为正既无符号数,所以将e加个127或者1023作为偏移,方便指数的比较。
尾数域M 占23位或者52位,1.01101但整数部分的1是默认的,可以不用存储,计算浮点数的存储方式,只需要依次求出1位的符号位,8位或11位的阶码,以及23位或者52位的尾数即可。
给出一个浮点数 计算对应的二进制
比如给定一个浮点数7.25如何计算它对应的单精度和双精度的二进制呢?
1、 十进制浮点数7.25对应的二进制:111.01
2、 用二进制的科学计数法1.1101*2^2
3、 按照浮点数的存储结构,得出符号位为0 表示正数
4 、阶码(指数+127/1023)E单精度为 2+127 双精度2+1023
5 、小数部分M为1001(单精度23位 双精度52位余下的0补0 即单精度补19个0 双精度补48个0)
6 、7.25的单精度和双精度表示为
单精度0 10000001 1101 0000000000000000000
双精度0 10000001 1101 000000000000000000000000000000000000000000000000