IEEE制定的浮點數表示規則


本文摘自:http://blog.csdn.net/chen_lady/article/details/51105443

IEEE制定的浮點數表示規則;

了解:

  目前C/C++編譯器標准都遵照IEEE制定的浮點數表示法來進行float,double運算。這種結構是一種科學計數法,用符號、指數和尾數來表示,底數定為2——即把一個浮點數表示為尾數乘以2的指數次方再添上符號。下面是具體的規格:
                    符號位     階碼      尾數     長度
     float           1          8           23      32
     double        1         11          52      64

 

以下通過幾個例子講解浮點數如何轉換為二進制數

例一:

已知:double類型38414.4。

求:其對應的二進制表示。

  分析:

       double類型共計64位
           最高位(第63位)是符號位,1表示該數為負,0表示該數為正;
           62-52位,一共11位是指數位;
           51-0位,一共52位是尾數位。

  步驟:

    按照IEEE浮點數表示法,下面先把38414.4轉換為十六進制數。把整數部和小數部分開處理:

    整數部直接化十六進制960E 即: 1001011000001110

      小數的處理:
       0.4=0.5*0+0.25*1+0.125*1+0.0625*0+……
         實際上這永遠算不完!這就是著名的浮點數精度問題。
        

           手工算到53位那么是:38414.4(10) = 1001011000001110.0110011001100110011001100110011001100(2)

    科學記數法為:1.001011000001110 0110011001100110011001100110011001100,左移了15位,指數為15。

           階碼:

      按IEEE標准一共11位,可以表示范圍是-1024 ~ 1023。為了便於計算,iEEE規定都先加上1023(2^10-1),

                 階碼:15+1023=1038。二進制表示為:100 00001110
           
符號位:

      因為38414.4為正,對應0;

           結果:(尾數二進制最高位的1不要)

                                         |--                                     尾數                                                         --|             

         符號位       階碼           |--尾數中的整數部分 -|  |--                      尾數中的小數部分                        --|                     
    0    1000000 1110   0010 11000001 110   01100  11001100  11001100  11001100  11001100

 

例二:

已知:整數3490593(16進制表示為0x354321)。

求:其對應的浮點數3490593.0的二進制表示。 

解法如下:

  先求出整數3490593的二進制表示:

       1.1010101000011001000012×221

 

     階碼:

     同上例,階碼值 = 實際指數值 +  127  ,那么本例子的階碼值為: 148 = 127 + 21 ;

        將148轉為二進制表示為10010100

 

     結果:(尾數二進制最高位的1不要)

                                    

     符號位       階碼                        尾數                                        
    0     10010100   101010100001100100001

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM