浮点数组成
以单精度浮点数(32位)为例说明:
十进制浮点数组成:
十进制基数(base)为10
 
二进制浮点数组成:
二进制基数(base)为2
以IEEE 754标准表示十进制数: ( 7.625 ) 10 (7.625)_{10} (7.625)10,先将其转成二进制表示: ( 111.101 ) 2 = 1.11101 ∗ 2 2 = 2 2 ∗ ( 1 + 0.11101 ) (111.101)_{2}=1.11101*2^{2}=2^{2}*(1+0.11101) (111.101)2=1.11101∗22=22∗(1+0.11101)
将以上二进制以IEEE 754标准存入内存中如下:
 
浮点数 二进制小数转十进制小数公式: s i g n ∗ 2 E ∗ ( 1 + m a n t i s s a ) sign*2^{E}*(1+mantissa) sign∗2E∗(1+mantissa) 这里的 E E E是实际指数(下面会说明 E E E的计算)而不是存储在内存中的指数。
IEEE 754 浮点数概述

IEEE 754 规范化浮点数
sign规定
0为正
1为负
exponent规定
指数部分有正有负,因此IEEE 754标准中采用有偏指数(The Biased exponent)表示。这意味着存储在内存中的指数部分 
     
      
       
       
         e 
        
       
      
        e 
       
      
    e并不是实际的指数 
     
      
       
       
         E 
        
       
      
        E 
       
      
    E。存储在内存中的指数 
     
      
       
       
         e 
        
       
      
        e 
       
      
    e为实际指数 
     
      
       
       
         E 
        
       
      
        E 
       
      
    E加上偏移常数(Bias)。
 对于单精度浮点数(32位)为例,实际指数 
     
      
       
       
         E 
        
       
      
        E 
       
      
    E和存储的指数 
     
      
       
       
         e 
        
       
      
        e 
       
      
    e之间的关系如下:
  
      
       
        
        
          E 
         
        
          = 
         
        
          e 
         
        
          − 
         
        
          127 
         
        
       
         E=e-127 
        
       
     E=e−127
 这里,127是偏移常数(Bias)。偏移常数计算采用: 
     
      
       
        
        
          2 
         
         
         
           n 
          
         
           − 
          
         
           1 
          
         
        
       
         − 
        
       
         1 
        
       
      
        2^{n-1}-1 
       
      
    2n−1−1,这里的 
     
      
       
       
         n 
        
       
      
        n 
       
      
    n为存储指数的bit位数。对于单精度浮点数,指数部分占8位(即 
     
      
       
       
         n 
        
       
         = 
        
       
         8 
        
       
      
        n=8 
       
      
    n=8),因此偏移常数是 
     
      
       
        
        
          2 
         
         
         
           8 
          
         
           − 
          
         
           1 
          
         
        
       
         − 
        
       
         1 
        
       
         = 
        
       
         127 
        
       
      
        2^{8-1}-1=127 
       
      
    28−1−1=127
mantissa规定
通过移位操作将小数点前的值固定为1。
mantissa为23位,但是小数点前有固定为1的一位,因此尾数部分比实际多一位,共24位(significand)
IEEE 754 非规范化浮点数
非规范化浮点数表示0和接近0的值
exponent规定
exponent部分全为0。
偏移值比规范化的偏移值小1。即: 2 n − 1 − 2 2^{n-1}-2 2n−1−2,以单精度浮点数为例 2 8 − 1 − 2 = 126 2^{8-1}-2=126 28−1−2=126表示0。指数位全为0,则是-126。
mantissa规定
规范化浮点数表示,mantissa部分有一个省略的前导1
非规范化浮点数表示,当指数位全为0时,mantissa部分没有被省略的前导1
特殊值
Infinity值

 
NaN(Not a Number)值

 
好用的几个工具
- base convert
- float toy












![LeetCode[简单] 141.环形链表](https://i-blog.csdnimg.cn/direct/c1a77a71073440f5b34b72e4ae55e500.png)






