國際統一標准IEEE754規定了浮點數的表示方法,這里以32位浮點數舉例,來陳述一下相互轉換的步驟。
格式說明
如上圖所示,32位數被分為3部分,符號數、階碼數、尾數。其中階碼是以移碼的形式表示,比較特殊。通過圖片中的三個字段,我們可以將浮點數還原成真實的二進制數值,之后可以在從二進制轉十進制。計算公式為
公式很好理解,唯一讓人有疑問的就是階碼的計算過程。接下來我介紹一個我自己的助記方法(僅助記,非正確結論)
為什么是E-127?
因為E是移碼表示,而移碼的計算(移碼=真值+偏置值),但是我們別忘了,我們的尾數部分的值其實我們還有一個整數part默認的1沒有移到小數點后
,所以,E=移碼-1
。
故 階碼真實值=E +1 - 偏置值
. 在32位的8位階碼中反映出來的就是減去127。
tips:階碼的解釋只是助記,是錯誤的理解。具體原因可以參考https://blog.csdn.net/i6223671/article/details/88312191 考研408題目一般比較基礎,會算即可。
十進制數轉浮點數
不多廢話,直接放圖,很好理解。