float存储
NUM = (-1) ^ S * M * 2 ^ E; (S表示符号,E表示阶乘,M表示有效数字)
S: 0为正数,1为负数
M: M为有效数字,1 <= M < 2;
2^E 表示指数
例如:3.0 则可以表示为(-1)^ 0 * 1.1 * 2 ^ 1
规定float型有一个符号位(S),有8个指数位(E), 和23个有效位(M)
规定float型有一个符号位(S),有11个指数位(E), 和52个有效位(M)
- 在储存M的时候,因为M肯定是大于1的,所以会舍弃第一个1。只储存小数点的数字
- 对于E,存入时,加上127。使用时,减去127。
对于E,还分为3中情况:
- E不全位0,不全为1:
正常情况使用 - E全为0:
这时,E等于1-127。M不再加上舍去的1,而是还原为0.xxxxx小数。这样是为了表示0和很小的整数 - E全为1:
- M全为0: 正负无穷大
- M不全为1: 不是一个数 NAN
例: 134.375计算过程