在我的計算機體系結構課程中,我們使用14位二進制模型(1位爲符號,5位爲指數,8位爲尾數)。當輸入指數時,我的指導員讓我們加16來抵消它(偏差16)爲什麼我們使用16偏差?是否因爲5位只能表示多達31個數字?如果是這樣,請詳細說明並比較使用指數時使用127偏差的IEEE單精度。最後,如果有人能夠給我一個關於這方面和二進制使用的偏見的明確定義,我將不勝感激。如果我說的內容不清楚,請發表評論。爲什麼教科書中使用的二進制十四位浮點模型使用偏差16,因爲IEEE單精度使用偏差127?
2
A
回答
3
IEEE 754二進制浮點格式遵循指數偏差的簡單模式。當指數爲p
位時,偏差爲。這個指數具有相同數量的正負指數。
對於單精度浮標p
爲8,因此偏差爲127.對於您的格式p
爲5且偏差爲15.也許您的導師將偏差改爲16,因爲格式不支持denorm,infinity和NaN 。
3
表示一系列數字的方法有多種,包括正數和負數。增加偏差特別靈活。範圍[-n, m)
可以通過將n
添加到每個數字來表示,將其映射到範圍[0, m+n)
。
該系統用於我已經使用的所有浮點系統中的指數。它簡化了一些比較,因爲非符號位的更大的無符號二進制值表示浮點的更大絕對量值,除了特殊值(例如NaN)。
對於浮點型指數,偏差大約是指數範圍的一半,因此大約一半的值位於零的每一邊。精確的平衡是不可能的,因爲有偶數個位模式,並且一個用於零。
正如在another answer中討論的那樣,IEEE754標準對5位指數使用15的偏差。
有選購16幾個可能的原因:
- 有一些實際的技術原因,如不治療31專項的建議之一。
- 偏差16使得1.0的表示特別簡單,只有一個非零位。
- 與IEEE 754略有不同有助於說服學生浮點並不意味着IEEE 754.還有其他浮點格式。
- 與IEEE 754略有不同可能會阻止使用現有工具來獲得練習結果而不理解表示如何工作。
- 它是爲指數偏置合理值中的一個,以IEEE 754
相關問題
- 1. IEEE浮點數,如何計算偏差
- 2. 什麼是浮點數的「偏差值」?
- 3. 獲取浮點型IEEE單精度位
- 4. LIMIT使用偏移誤差
- 5. 浮點尾數偏差
- 6. 浮點運算=從十二進制到二進制最差的精度/差異是多少?
- 7. 浮點數表示中的偏差值
- 8. 將IEEE浮點十六進制轉換爲十進制?
- 9. 十六進制浮點數IEEE 754雙精度C++
- 10. 什麼是單精度32位IEEE 754浮點?
- 11. Ruby將64位IEEE 754十六進制轉換爲雙精度
- 12. 在Java中獲得(十進制)浮點數的IEEE 754(單精度)表示法
- 13. 使用Java計算標準偏差?
- 14. 嵌套表格不使用偏差
- 15. 試圖使用標準偏差java
- 16. 浮點:IEEE爲主,但位值的二進制
- 17. 爲什麼使用十六進制?
- 18. 爲什麼十進制數16 == 5的二進制表示中的位數?
- 19. 使用16位將十進制數轉換爲2的補碼
- 20. 將二進制32位IEEE-754浮點數轉換爲.net
- 21. 將二進制字符串轉換爲IEEE-754單精度 - Python
- 22. 十進制到半精度浮點數
- 23. 如何將IEEE-11073 16位SFLOAT轉換爲Java中的簡單浮點型?
- 24. IEEE-754單精度浮點數mips
- 25. 在C#中將十六進制轉換爲IEEE 754浮點數
- 26. 什麼VHDL庫使用十進制模
- 27. 標準雙精度IEEE浮點數有多少位的精度?
- 28. 爲什麼在非整數值上使用模數會失去浮點精度?
- 29. 使用__asm從十六進制偏移調用函數
- 30. 使用IEEE 754將浮點數轉換爲基數10使用IEEE 754
任意選擇,沒有參照的指數偏壓使得IEEE漂浮可比作爲符號/幅值的整數。這對CPU內部可能是有用的,所以他們可以重用他們的比較硬件的浮點數。這對於像['nextafterf'](http://en.cppreference.com/w/c/numeric/math/nextafter)之類的float bithack函數也很有用。 –