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)

  1. 在储存M的时候,因为M肯定是大于1的,所以会舍弃第一个1。只储存小数点的数字
  2. 对于E,存入时,加上127。使用时,减去127。

对于E,还分为3中情况:

  1. E不全位0,不全为1:
    正常情况使用
  2. E全为0:
    这时,E等于1-127。M不再加上舍去的1,而是还原为0.xxxxx小数。这样是为了表示0和很小的整数
  3. E全为1:
    • M全为0: 正负无穷大
    • M不全为1: 不是一个数 NAN

例: 134.375计算过程

posted @ 2021-10-20 16:54  penuel  阅读(77)  评论(0编辑  收藏  举报